Как выйти из дочернего процесса и вернуть его статус из execvp()?
Из вашего вопроса немного exit сложно понять, о чем вы спрашиваете. Поэтому exit я постараюсь затронуть пару forking связанных вопросов:
-
execvp()
либо не возвращает (в случае успеха), либо возвращает ошибку. Это означает, что ваш дочерний код должен обрабатывать только условия ошибки. Ваш дочерний код должен фиксировать результатexecvp()
и использовать это значение вexit()
, как вы предложили. Ваш дочерний код никогда не должен возвращать 0, поскольку единственный успех означает, чтоexecvp
работал и эти процессы вернут 0 (или нет). - Родитель может получить информацию о своем статусе выхода из
waitpid()
. Определено несколько макросов для извлечения информации из возвращаемого параметраstatus
. Для вашей цели важныWIFEXITED
, чтобы сообщить вам, завершился ли дочерний элемент «нормально», иWEXITSTATUS
, чтобы получить статус ребенка, переданный вexit()
. См. Страницу руководстваwaitpid
для получения информации о других макросах.
c
exec
fork
exit
2021-12-22T06:02:32+00:00
2022-04-22T20:23:49+00:00
Uzimandia
Вопросы с похожей тематикой, как у вопроса:
Как выйти из дочернего процесса и вернуть его статус из execvp()?
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.