Как обнаружить несуществующие процессы в Linux?

У меня есть родительский и дочерний процессы, написанные на языке C. Где-то в родительском процессе сигнал HUP отправляется дочернему. Я хочу, чтобы мой родительский процесс определял, мертв ли ​​ребенок. Но когда я отправляю SIGHUP, дочерний процесс становится зомби. Как я могу определить, является ли ребенок зомби в родительском процессе? Я пробую приведенный ниже код, но он не возвращает мне желаемого результата, так как дочерний процесс все еще существует, но он больше не существует.

kill(childPID, 0);

Еще один вопрос; Могу ли я убить ребенка-зомби, не убивая родителя?

Спасибо.


person Hakan    schedule 29.03.2010    source источник


Ответы (1)


из Википедии:

В Unix и Unix-подобных компьютерных операционных системах процесс-зомби или несуществующий процесс — это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись по-прежнему необходима, чтобы позволить процессу, который запустил процесс (теперь зомби), прочитать его статус выхода.

Если родитель получает статус выхода, вызывая ожидание, ожидание и т.п., зомби должен исчезнуть.

Вы можете определить, жив ли процесс, с помощью функций ожидания (ожидание человека).

person Ronny Brendel    schedule 29.03.2010