Intereting Posts
Что означает Unix-программирование? Как имитировать взаимодействие пользователя при запуске другого скрипта getnameinfo не разрешает IP-адрес fdisk зависает на «Синхронизация диска» при изменении размера исходного изображения QEMU / usr / bin / awk: слишком длинный список аргументов Установите графический драйвер NVIDIA GTX на Linux Mint 17.1 почему я не могу пинговать Google со статическим IP-адресом? Как я могу получить шрифт Terminus на gnome-terminator? Получить количество слов в текстовом файле для всех слов и распечатать результат сортировки Вывод, который будет сохранен в файле с именем, аналогичным входному файлу Как узнать смещение таблицы плохих блоков и как изменить его в u-Boot Сценарий для изменения текущего каталога (cd, pwd) Не удается записать на недавно созданный раздел EXT4 Шаблоны ssh config, чтобы избежать ввода имени пользователя Какие типы разрешений должны иметь домашний каталог пользователя и файлы?

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

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

Я проследил его до 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 временно игнорируется.