Почему SIGHUP игнорируется демоном (3) только во FreeBSD?

В рамках обсуждения systemd tmux daemon() на reddit я заметил, что это только версия библиотеки sigaction(2) библиотеки daemon() библиотеки FreeBSD, которая игнорирует SIGHUP sigaction(2) , но не OpenBSD или glibc / misc / daemon.c. Зачем?

One Solution collect form web for “Почему SIGHUP игнорируется демоном (3) только во FreeBSD?”

Я проследил его до https://svnweb.freebsd.org/base?view=revision&revision=122442 и https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=25462 .

Кажется, что есть несколько угловых случаев, когда signal SIGHUP доставляется, когда вызов библиотеки daemon() вызывает fork(2) за которой следует _exit(2) родителя, что сделает доставку hup (согласно _exit(2) ) и завершит дочерний процесс, если родитель, из которого он выполняется, уже является лидером сеанса, как описано в setsid(2) .

Чтобы избежать вышеуказанного непреднамеренного окончания ребенка в этих ограниченных обстоятельствах, когда вызывающий абонент является лидером сеанса (полный список, если это так, находится в Bugzilla выше), SIGHUP временно игнорируется.

  • Будет ли эта команда работать, если соединение с удаленным сервером будет потеряно?
  • Как сделать программу, которая запускается из оболочки, по-прежнему жить после закрытия терминала?
  • Возможно ли запустить nohup и все еще видеть подробный вывод на экране
  • Как заставить nohup не создавать выходные файлы и не есть все пространство?
  • Длительный сценарий прекращает отправку вывода в файл
  • Наличие постоянного IRC-клиента
  • Есть ли разница между nohup и nohup на экране?
  • Почему фоновые задания запускаются моей оболочкой, живущей дольше, чем исходная оболочка и управляющие терминалы?
  • служба убита при ssh hangup
  • Вход в несколько файлов во время процесса в фоновом режиме (nohoup)
  • запуск сервера с nohup и перенаправление ввода, вывод
  • Interesting Posts

    Является ли GREP_OPTIONS = –color = всегда игнорируется?

    Cron на Amazon EC2 centos по-прежнему выполняется даже после удаления

    Как настроить сеть для каждого пользователя?

    Отключить завершение вкладки bash

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

    Нет подключения к сети с драйверами virtio под гостевой WinXP (libvirt / Qemu на хосте Linux)

    Замена параметров mysql с помощью sed

    Серийный кабель Usb (плодовитый) не работает с драйвером ftdi_sio на изображении rpi-buildroot

    На Gentoo загружаются мои сетевые интерфейсы?

    Изменить красную границу между окнами в xmonad

    Debian начинает случайную перезагрузку

    Как найти устройство в RAID1 под Linux?

    Как скопировать с подстановочным знаком в имя каталога?

    rsync на USB-накопитель, всегда передающий все данные

    linux, эквивалентный команде AIX proctree, чтобы показать все дочерние и родительские процессы заданного PID

    Linux и Unix - лучшая ОС в мире.