SIGHUP

В POSIX-системах, SIGHUP — сигнал, посылаемый процессу для уведомления о потере соединени�…

SIGHUP
SIGHUP
Описание Потеря соединения с терминалом
По умолчанию завершение процесса
Коды SA_SIGINFO
Не имеет специфических кодов

В POSIX-системах, SIGHUP — сигнал, посылаемый процессу для уведомления о потере соединения с управляющим терминалом пользователя.

SIGHUP — целочисленная константа, определённая в заголовочном файле signal.h. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

POSIX закрепляет за SIGHUP значение 1. Например, для активации новых терминалов после их добавления в файл /etc/ttys рекомендуется послать SIGHUP процессу init, командой «kill -1 1» (init имеет PID = 1).

Этимология

SIG — общий префикс, означающий «сигнал», HUP — сокращенное написание англ. hang up — отбой, прерывание линии.

История

Много лет доступ к компьютерам (мэйнфреймам) осуществлялся подсоединением к ним компьютерных терминалов через последовательные линии (например, линии стандарта RS-232). Поэтому при разработке системы сигналов был определен сигнал разрыва соединения, для завершения всех программ запущенных с потерянного терминала.

Сигналы всегда были удобным средством межпроцессного взаимодействия, но ранние разработки не включали в себя пользовательских сигналов (таких как появившиеся позднее SIGUSR1 и SIGUSR2), которые программа могла использовать для собственных нужд. По этой причине, в программах, не использующих при своей работе управляющих терминалов, например демонах, SIGHUP стали использовать для переинициализации (перечитывания файлов конфигурации). Такое использование SIGHUP сохранилось и по сей день, как в старых и стандартных программах (init, inetd, cron, Sendmail, Apache …), так и в большинстве новых, и считается стандартом де-факто.

Использование

Сигнал SIGHUP посылается:

  • При прерывании соединения на последовательной линии — программам, запущенным с терминала, подключенного к ней; часто из-за того, что пользователь отсоединяет свой модем от телефонной или выделенной линии. Операционная система определяет разрыв соединения по исчезновению сигнала «несущая» (англ. carrier detect, DCD) последовательного порта.
  • При закрытии псевдо- или виртуальных терминалов, которые используются на современных системах вместо аппаратных терминалов.
  • Утилитой или функцией kill, с консоли или из скрипта/утилиты для управления демоном — для выполнения предусмотренного действия (обычно перечитывания конфигурации и переинициализации).

Обычным действием по умолчанию для SIGHUP в POSIX-системах является завершение процесса.

Unix-шелл при получении SIGHUP обычно запускает заново все остановленные задачи перед посылкой им SIGHUP. В других реализациях (например, GNU bash) шелл «отрекается» от всех дочерних задач перед завершением (и они продолжают работать)[источник не указан 3536 дней].

SIGHUP может быть перехвачен или проигнорирован программой.

Для предотвращения завершения SIGHUP стандартных программ и утилит существует утилита nohup («префикс» для программы в командной строке). nohup настраивает игнорирование SIGHUP, после чего запускает программу с аргументами в фоновом режиме с перенаправлением вывода в файл nohup.out в текущем или домашнем каталоге пользователя.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.