LINUX.ORG.RU

Передача параметров в exec


0

0

Надо передать в execl параметр типа U32
U32 aaa;
aaa = 100;
execl(path, name, (char *)aaa);

В вызываемом процессе name :

U32 *p_arg, arg;

p_arg = (unsigned int*)argv[1];
arg = *p_arg;

Так вот переменная arg должна быть arg=aaa=0x64, а равна arg=0x4d4d0064.
Т.е. появляется мусор какой-то. Если aaa = 10000 или больше, то 
arg = 0x4d002710.... мусор перекрывается. Как с этим мусором бороться ?
Как очистить???

anonymous

хорошо думаем головой!
подумали?
ещё раз хорошо думаем ГОЛОВОЙ!

Должно было быть:

//передаём в execl параметр типа U32
U32  aaa = 100;
char aaa_str[64];
snprintf(aaa_str,sizeof(aaa_str),"%lu",aaa);
execl(path, name, aaa_str, NULL);

В вызываемом процессе name :

char *arg_str;
U32 arg;

arg_str = argv[1];
arg = strtoul(arg_str,NULL,10);

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.