Когда я пишу сценарий оболочки, как показано ниже:
# demo.sh
somework &
Тогда запустите это sh demo.sh
.Использование & вызовет выход demo.sh и сделает паррент-идентификатор somework равным 1, init.
Затем я выхожу из своего терминала, завершаю сеанс, почему somework не получает HUP, а задания не могут его показать. Так что я полагаю, что от этого отказались.
Я пишу код на Ruby, чтобы проверить это:
# Fork an process then sleep it.
fork do
sleep
end
Затем я запускаю его с помощью ruby demo.rb
. С участием ps
показал, что родительский процесс сейчас запущен.
Затем я выхожу из терминала. Он все еще работает.
Почему, когда процесс осиротел, откажется от него?
http://www.gnu.org/software/libc/manual/html_node/Orphaned-Process-Groups.html
Получил ответ из Руководства GNU :
Чтобы предотвратить проблемы, группы процессов, которые продолжают работать даже после завершения лидера сеанса, помечаются как потерянные группы процессов.