выход (...): это приведет к завершению родительского процесса? - PullRequest
0 голосов
/ 20 марта 2019

Если я вызову exit (1) в дочернем процессе, приведет ли это действие к завершению родительского процесса?Или просто только дочерний процесс завершается с помощью exit (1)?

Ответы [ 3 ]

3 голосов
/ 20 марта 2019
man exit

Это показывает

Функция exit () вызывает нормальное завершение процесса [текущий / дочерний] и значение состояния [exit] возвращается вparent [process] (см. wait (2))....

После exit () состояние выхода должно быть передано в родительский процесс.Есть три случая.Если родитель установил SA_NOCLDWAIT или установил обработчик SIGCHLD в SIG_IGN, статус сбрасывается.Если родитель ожидает ребенка, он уведомляется о состоянии выхода.В обоих случаях выходной процесс умирает немедленно.Если родитель не указал, что его не интересует состояние выхода, но он не ждет, процесс выхода превращается в процесс «зомби» (который является ничем иным, как контейнером для одного байта, представляющего состояние выхода), так чтоparent может узнать состояние выхода, когда позже вызовет одну из функций wait (2).

1 голос
/ 20 марта 2019

Нет, exit () не завершает родительский процесс. Функция exit () завершит текущий процесс и вернет код выхода родительскому процессу. Таким образом, если вы используете exit (1), код завершения 1 будет возвращен родительскому процессу.

1 голос
/ 20 марта 2019

exit не заставляет родителя также выйти. Это вызывает нормальное завершение процесса для текущего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...