Как дочерний процесс все еще работает, когда я выхожу из окна терминала?

Когда я выполняю

dd if=/dev/zero of=/dev/null

Затем закройте окно терминала, я вижу, что dd все еще работает, и это значение PPID отличается от первого раза. Что происходит для процесса dd?

всякий раз, когда убивающий родительский процесс убивает дочерний процесс?

0
задан 25 February 2018 в 18:51

2 ответа

Закрытие интерактивного терминала без входа (например, окно терминала в Gnome или kde) не будет отправлять сигнал SIGHUP. Вы можете изменить это поведение в оболочке другого типа (с помощью опции huponexit), но не в интерактивных терминах без входа. См. Https://askubuntu.com/a/685291/798765 для получения более подробной информации о huponexit;)

3
ответ дан 17 July 2018 в 20:01

Закрытие интерактивного терминала без входа (например, окно терминала в Gnome или kde) не будет отправлять сигнал SIGHUP. Вы можете изменить это поведение в оболочке другого типа (с помощью опции huponexit), но не в интерактивных терминах без входа. См. Https://askubuntu.com/a/685291/798765 для получения более подробной информации о huponexit;)

3
ответ дан 23 July 2018 в 20:45
  • 1
    Что касается PPID, становится ли он таким же, как PID выскочка (на мобильном прямо сейчас, не могу попробовать себя)? См. Комментарий Коса на ответ выше – Simon Van Machin 25 February 2018 в 21:42
  • 2
    Я думаю, что процесс повторно зарегистрирован для процесса init (pid 1) в этом случае. В настоящее время это systemd. – PerlDuck 25 February 2018 в 21:51
  • 3
    Но его родитель убит! Как ребенок жив? – Sinoosh 26 February 2018 в 07:57
  • 4
    @Sinoosh: детские процессы не убиваются по смерти их родителей по умолчанию. – David Foerster 26 February 2018 в 23:48
  • 5
    @Sinoosh См. [D0] stackoverflow.com/a/21869303 и man kill («отрицательные значения PID могут использоваться для выбора целых групп процессов (...)») – Simon Van Machin 27 February 2018 в 12:02

Другие вопросы по тегам:

Похожие вопросы: