Я пытаюсь использовать execlp в программе c для запуска другой c-программы. Функция exec выполняет вызов программы, но она не передает правильные аргументы. Мой Exec вызов:Как передать аргументы командной строки программе C с помощью execlp
int exec_arg_1, exec_arg_2;
if(pid == 0){
printf("Repeat Number: %d, Process Number: %d\n", exec_arg_1, exec_arg_2);
execlp("/home/drlight/Desktop/asp/Assignment_3/philosopher.o",
"philosopher.o", &exec_arg_1, &exec_arg_2, NULL);
printf("Exec didn't work...\n");
}
Я присвоить значения exec_arg Интс, и печатать их прямо перед тем, чтобы убедиться, что они правы, но функция philosopher.o просто читает 0 от местоположения. Если я запустил philosopher.o из командной строки, он нормально читает аргументы.
Почему бы просто не взглянуть на страницу руководства для 'execlp', чтобы узнать, какие типы аргументов он принимает? Вы вызываете неопределенное поведение. – Olaf
Просто поймите, что разработчики Unix/Linux могут обрабатывать только текст. Учитывая двоичное представление, скажем, целого числа, их мозг взрывается. –
Я пробовал передавать массивы char, но та же проблема возникает. Кроме того, я думал, что целые числа и символы являются взаимозаменяемыми в большинстве ситуаций на C. Я не получал никаких предупреждений компилятора. – Spence123