c++ - 将 argv 类型转换为结构类型

标签 c++ c unix linux-kernel

我有一个结构定义为

struct xyz {

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

我正在从其他一些程序 1 获取可执行文件的输入参数。(其他程序使用输入参数作为此结构执行 program2execve)。

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

最佳答案

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

这是因为字符串以 null 结尾。您的 char* 成员将在末尾有一个 \0,即使没有,任何小于 16843009 (0x01010101) 的 int将有一个空字节,无法正确复制。

关于c++ - 将 argv 类型转换为结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047987/

相关文章:

linux - 如何使用 SED 命令在模式匹配之前插入一行

macos - 如何使用CHMOD获取 "drwx---r-x+"文件夹权限? - bash 脚本

c++ - 使用 libcurl 发送 "request payload"?

c++ - 返回 NULL 作为对象时没有收到任何警告

c - 如何在 C 中使用 pthread 交替 5 个 0 值和 5 个 1 值?

c - 如何将字符串中的指针值传递给指针

database - 如何在 Mac OS X 上从命令行启动 sqlite 数据库浏览器

C++ 命名空间成员在不同文件中的访问如何进行? "namespace std"是如何实现的?

c++ - 如何管理返回给 QML 的动态分配的 QObject 的生命周期?

c - #Include 在编译 Linux 内核时如何工作