Как выйти из дочернего процесса и вернуть его статус из execvp()?

Из вашего вопроса немного exit сложно понять, о чем вы спрашиваете. Поэтому exit я постараюсь затронуть пару forking связанных вопросов:

  • execvp() либо не возвращает (в случае успеха), либо возвращает ошибку. Это означает, что ваш дочерний код должен обрабатывать только условия ошибки. Ваш дочерний код должен фиксировать результат execvp() и использовать это значение в exit(), как вы предложили. Ваш дочерний код никогда не должен возвращать 0, поскольку единственный успех означает, что execvp работал и эти процессы вернут 0 (или нет).
  • Родитель может получить информацию о своем статусе выхода из waitpid(). Определено несколько макросов для извлечения информации из возвращаемого параметра status. Для вашей цели важны WIFEXITED, чтобы сообщить вам, завершился ли дочерний элемент «нормально», и WEXITSTATUS, чтобы получить статус ребенка, переданный в exit(). См. Страницу руководства waitpid для получения информации о других макросах.

c

exec

fork

exit

2022-04-22T20:23:49+00:00