Типизация argv к типу структуры - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть структура, определенная как

struct xyz {

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

, которую я получаю в качестве входного параметра для исполняемого файла из какой-то другой программы1. (Другая программа сделала execve из program2 с входным параметром, как этотсостав).

Я хотел бы знать, могу ли я выполнить приведение типа этого входного параметра как (struct xyz*)argv[1];, или мне нужно преобразовать его в строковый формат перед отправкой?

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Вы не можете таким образом передавать произвольные данные команде.Вам придется сериализовать его в строку или выполнить какой-либо IPC (например, через трубу / сокет).

Причина этого в том, что строки заканчиваются нулем.У вашего char* участника будет \0 в конце, и даже если этого не произойдет, любой int меньше 16843009 (0x01010101) будет иметь нулевой байт и не сможет правильно копировать.

0 голосов
/ 08 ноября 2011

argv [1] является строкой.Вы не можете привести строку к структуре.Вам нужно создать свои собственные функции-обертки для сериализации и анализа, а затем следить за всеми видами проблем - проблемами с порядком байтов и проблемами кодирования (широкие символы с Unicode и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...