我有一个定义为
的结构struct xyz {
char *str;
int x;
int y;
};
我从其他program1获取可执行文件的输入参数。(其他程序使用输入参数作为此结构的execve
program2
。
我想知道,我可以将此输入参数的类型转换为(struct xyz*)argv[1];
,还是必须在发送之前将其转换为字符串格式?
答案 0 :(得分:4)
您不能以这种方式将任意数据传递给命令。您必须将其序列化为字符串,或执行某些IPC(例如通过管道/套接字)。
原因是字符串以空值终止。您的char*
成员最后会有一个\0
,即使它没有,任何小于16843009(0x01010101
)的int都会有一个空字节并且无法复制正常。
答案 1 :(得分:0)
argv [1]是一个字符串。您不能将字符串强制转换为结构。您需要创建自己的包装函数来进行序列化和解析,然后注意各种问题 - 字符串问题和编码问题(使用Unicode的宽字符等)