Неясности с деревом процессов

Неясности с деревом процессов

13.04.2018 12:37:08 Просмотров 23 Источник

Я запускаю терминал. В нем запускаю firefox. Если я закрою терминал, тоесть убью процесс, который является родительским к процессу, в котором работает firefox, то firefox тоже завершится. Почему это так? Разве родитель firefox не должен поменяться на init??? Ну и соответственно firefox будет работать дальше

У вопроса есть решение - Посмотреть?

Ответы - Неясности с деревом процессов / Неясности с деревом процессов

Является ответом!
Fat-Zer

13.04.2018 01:06:52

Если кратко, то при закрытии управляющего терминала контролирующий его процесс, обычно это оболочка (bash например) получает сигнал SIGHUP и завршает свою работу. Момимо прочего оболочка пересылает этот сигнал всем запущенным в ней задачам (jobs), что и вызывает завершение firefox'а.

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

  1. Запустить комманду с помощью nohup

    nohup firefox
    
  2. Для bash можно исключить процесс из рассылки SIGHUP'а с помощью disown:

    firefox &
    disown $! #или disown <firefox_pid>
    
Закрыть X