Я пытаюсь загрузить exec
в файл из более чем 5 раз и сохранить результаты. Я использую вилочного-Exec-ожидание в цикле, это то, как он выглядит:fork exec wait loop for the command line Введенное значение
for(i = 0; i< Number_of_Processes; i++){
pid = fork();
if(pid == 0)
{
execl(...);
exit(EXIT_Failure);
}
else if(pid > 0)
{
wait(&status);
result = WEXITSTATUS;
}
}
Проблема заключается в том, выполняется второй файл первый раз правильно, а затем перепечатывает первый результат в течение 5 раз (или что бы ни вводил пользователь) Я пробовал так много других способов, например, перерыв, когда это pid == 0
, но это не сработало. я не смог найти правильный пример того, как использовать exec
в цикле, поэтому я застрял часами, пытаясь перемещать функции вверх и вниз и ничего не получаю. Что бы я ни делал, я не вижу второго выполнения внутреннего файла.
Какой результат это печать? Кстати, 'WEXITSTATUS' - это макрос, который принимает значение вашего' status'. См. Пример [здесь] (http://man7.org/linux/man-pages/man2/waitpid.2.html). – chrisaycock
@chrisaycock первая строка моего результата - это то, что я ожидаю от моего кода, но вторая строка, а остальные - это то же самое, что и первое, подобное exec, не запускалось более одного раза – yasamin
Поскольку вы знаете, что такое 'pid' вы ожидаете, я предлагаю вам использовать 'waitpid' вместо' wait'. Возможно, вы поймаете неудачное завершение ребенка. – DyZ