Разъяснение по сигналам (sighup), заданиям и управляющему терминалу

Разъяснение по сигналам (sighup), заданиям и управляющему терминалу

Итак, я прочитал две разные точки зрения и пытаюсь понять, какая из них правильная.

1) Некоторые источники в сети говорят, что сигналы, отправляемые с управляющего терминала, отправляются ТОЛЬКО в группу процессов переднего плана. Это означает, что если вы хотите, чтобы процесс продолжал работать в фоновом режиме, когда вы выходите из системы, достаточно просто приостановить задачу (ctrl-Z) и возобновить ее в фоновом режиме (bg). Затем вы можете выйти из системы, и она продолжит работу, потому что SIGHUP отправляется только в задачу переднего плана.

Видеть:http://blog.nelhage.com/2010/01/a-brief-introduction-to-termios-signaling-and-job-control/

...Кроме того, если терминал считывает какой-либо генерирующий сигнал символ, он генерирует соответствующий сигнал для группы процессов переднего плана....

2) Другие источники утверждают, что вам нужно использовать команду "nohup" во время выполнения программы или, если это не удается, выполнить команду "disown" во время выполнения, чтобы удалить ее из таблицы заданий, которая прослушивает SIGHUP. Они говорят, что если вы не сделаете этого при выходе из системы, ваш процесс также завершится, даже если он запущен в фоновой группе процессов.

Например:http://docstore.mik.ua/orelly/unix3/upt/ch23_11.htm

...Если я все равно выйду из системы, оболочка пошлет моему фоновому заданию сигнал HUP...

В моих собственных экспериментах с Ubuntu linux похоже, что 1) верно. Я выполнил команду: "sleep 20 &", затем вышел из системы, снова вошел в систему и нажал did a "ps aux". Конечно, команда sleep все еще работала.

Так почему же тогда так много людей, похоже, верят в номер 2? И если все, что вам нужно сделать, это поместить задачу в фон, чтобы она работала, почему так много людей используют "nohup" и "disown"?

Связанный контент