Что означает <defunct> в выводе ps?


15

Я дал ps -ef|grep javaкоманду, и это одна из записей, которые я получил:

subhrcho   875   803  0 Jan23 pts/5    00:02:27 [java] <defunct>

Что <defunct>здесь подразумевается? В каком состоянии находится этот процесс с PID = 875?

Ответы:


16

Из справочной страницы PS :

Отмеченные процессы <defunct>- это мертвые процессы (так называемые "зомби"), которые остаются, потому что их родитель не уничтожил их должным образом. Эти процессы будут уничтожены init (8), если родительский процесс завершится.


Каков контракт между родительским процессом и дочерним процессом для уничтожения дочернего процесса? Я думал, что обязанностью дочернего процесса является уведомление родителя о том, что он уничтожается?
Компьютерщик

@Geek Ядро уничтожает дочерний процесс и уведомляет родительский процесс. Ребенок только звонит _exitили умирает от сигнала. Когда ядро ​​уничтожает процесс, все, что остается, - это запись в таблице процессов, которая исчезает, когда родитель (или процесс 1 для сирот) вызывает wait.
Жиль "ТАК - перестань быть злым"

2
@Giles Что означает, что на странице руководства говорится, что родительский процесс не уничтожил должным образом дочерний процесс? родитель не звонил ждать?
Компьютерщик
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.