类型化argv到结构类型

时间:2011-11-08 08:59:27

标签: c++ c unix linux-kernel

我有一个定义为

的结构
struct xyz {

    char *str;
    int x;
    int y;
};

我从其他program1获取可执行文件的输入参数。(其他程序使用输入参数作为此结构的execve program2

我想知道,我可以将此输入参数的类型转换为(struct xyz*)argv[1];,还是必须在发送之前将其转换为字符串格式?

2 个答案:

答案 0 :(得分:4)

您不能以这种方式将任意数据传递给命令。您必须将其序列化为字符串,或执行某些IPC(例如通过管道/套接字)。

原因是字符串以空值终止。您的char*成员最后会有一个\0,即使它没有,任何小于16843009(0x01010101)的int都会有一个空字节并且无法复制正常。

答案 1 :(得分:0)

argv [1]是一个字符串。您不能将字符串强制转换为结构。您需要创建自己的包装函数来进行序列化和解析,然后注意各种问题 - 字符串问题和编码问题(使用Unicode的宽字符等)