Что может быть неправильным с этим заявлением execl
? Когда я пытаюсь запустить его, принимающий исполняемый жалуется, что argc
меньше 3. Когда я распечатать содержимое ARGV, я получаю следующее:execl не записывает все аргументы
argv[1] = -1076146944
argv[2] = 0
Несмотря на аргументы, состоящий из:
numJoeysStr = 6
randomNumSeedStr = 7
execl("/path/to/executable", "numJoeysStr", "randNumSeedStr", (char *)0);
FWIW, я попробовал NULL вместо (char *) 0). Это не изменило ситуацию.
Chris Jester-Young решена моя самая большая проблема, но теперь я получаю следующее после размещения в функции дважды:
argv[1] = -1075725068
argv[2] = -1075725056
Я попытался разыменования, выполнив:
printf("argv[1] = %d\n", *argv[1]);
printf("argv[2] = %d\n", *argv[2]);
только получить следующее:
argv[1] = 110
argv[2] = 114
Когда я ожидал:
argv[1] = 6
argv[2] = 7
Для окончательной проблемы получается, что передача переменных в execl
без кавычек дала ему числа, которые я ожидал. Мне как-то казалось, что все аргументы execl
(кроме последнего) должны быть в кавычках, даже переменные.
Почему вы печатаете аргументы как целые числа, а не как строки? – immibis
О, верно! Позвольте мне попробовать strtol() – user1185790
Я прокомментировал это до вашего редактирования. Ваша новая проблема заключается в том, что вы печатаете значение ASCII первого символа, чего вы не хотите. (И да, 'strtol' преобразует десятичную форму числа (в строке) в фактическое число) – immibis