Какой статус должен получить процесс от родительского процесса, чтобы стать зомби?
Ответ от нейросети
sobes.tech AI
Процесс становится зомби (zombie) или "процессом-призраком", когда он завершает свое выполнение (переходит в состояние EXIT_ZOMBIE), но запись о нем в таблице процессов все еще существует, ожидая пока его родительский процесс прочитает его статус завершения с помощью системного вызова wait() или waitpid(). До этого момента он занимает минимальные ресурсы (практически только запись в таблице процессов), но не освобождает полностью связанные с ним ресурсы.
В таблице процессов такой процесс обычно отображается с индикатором <defunct>.
# Пример вывода команды ps, показывающий зомби-процесс
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
someuser 1234 0.0 0.0 0 0 pts/0 Z+ 10:00 0:00 [defunct_process]
...
Чтобы зомби-процесс исчез, родительский процесс должен вызвать wait() или waitpid(). Если родительский процесс завершается до того, как прочитает статус своих зомби-детей, эти дети переходят под опеку процесса init (с ID 1), который автоматически вызывает wait() для своих дочерних процессов, тем самым очищая зомби.
Таким образом, основной статус, который получает процесс от родительского, чтобы стать зомби, это состояние завершения, которое родитель еще не обработал через wait* вызовы.