Назад | Перейти на главную страницу

Почему при установке ppid процесса на 1 открестится от него?

Когда я пишу сценарий оболочки, как показано ниже:

# 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 :

Чтобы предотвратить проблемы, группы процессов, которые продолжают работать даже после завершения лидера сеанса, помечаются как потерянные группы процессов.