Вкратце, плюс ссылки.
процесс, который завершился / завершился, но чей родитель еще не подтвердил завершение (с помощью системных вызовов wait ()
). Мертвые процессы хранятся в таблице процессов, так что их родитель может быть проинформирован о том, что их дочерний процесс завершается, и о своем статусе выхода. Обычно программа, разветвляющая детей, также считывает их статус выхода при выходе, поэтому вы увидите зомби только в том случае, если родитель остановлен или работает с ошибкой.
См .:
waitpid (2)
Это связанные с управлением заданиями в контексте оболочки, запущенной на терминале. Пользователь входит в систему, запускается сеанс, он привязан к терминалу (управляющий терминал), и запускается оболочка. Затем оболочка запускает процессы и отправляет их на передний и задний план по желанию пользователя (используя &
при запуске процесса, останавливая его с помощью ^ Z
, используя fg
] и bg
).
Процессы в фоновом режиме останавливаются при чтении или записи с терминала; процессы на переднем плане получают сигнал прерывания, если на терминале попадает ^ C
. (Это драйвер терминала ядра, который обрабатывает эти сигналы, оболочка контролирует, какой процесс (группа) отправляется на передний план или в фоновый режим.
См .:
Процесс, выполняющийся как демон, обычно не должен быть привязан к какому-либо конкретному терминал (или сеанс входа в систему, или оболочку). У него не должно быть управляющего терминала, чтобы он не получал сигналов, если терминал закрывается, и обычно не нужно, чтобы он выполнял ввод-вывод на терминале. Для запуска демона из командной строки требуется разорвать все связи с терминалом, то есть начать новый сеанс (в смысле управления заданиями выше), чтобы избавиться от управляющего терминала, и закрыть дескрипторы файлов для терминала. Конечно, что-то, что запущено из init
, systemd или аналогичных, вне сеанса входа в систему, не будет иметь этих связей с самого начала.
Так как у демона нет управляющего терминала, он не подлежит управлению заданиями, и нахождение «на переднем плане» или «в фоновом режиме» в смысле управления заданиями не применяется. Кроме того, демоны обычно переопределяют init
, который очищает их при выходе, поэтому вы обычно не видите в них зомби.
См .: