Jump to content

ПОДПИСАТЬСЯ

На платформах, совместимых с POSIX , SIGHUP » ) , зависание сигнала это сигнал посылаемый процессу , когда его управляющий терминал закрывается. Первоначально он был разработан для уведомления о процессе отключения последовательной линии . SIGHUP — символическая константа , определенная в заголовочном файле. signal.h.

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

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

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

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

Современное использование

[ редактировать ]

С уменьшением доступа по последовательной линии значение SIGHUP несколько изменилось в современных системах, что часто означает, что управляющий псевдо- или виртуальный терминал был закрыт. Если команда выполняется внутри окна терминала и окно терминала закрывается во время выполнения командного процесса, оно получает сигнал SIGHUP. [1]

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

Это можно обойти двумя способами. Во-первых, Единая спецификация UNIX описывает утилиту оболочки под названием nohup , которую можно использовать в качестве оболочки для запуска программы и заставить ее игнорировать SIGHUP по умолчанию. Во-вторых, дочерние группы процессов можно «отключить», вызвав disown с идентификатором задания , который удаляет группу процессов из таблицы заданий оболочки (поэтому им не будет отправлен SIGHUP) или (необязательно) сохраняет их в таблице заданий, но предотвращает их от получения SIGHUP при завершении оболочки.

Различные оболочки также имеют другие методы контроля и управления SIGHUP, такие как отключения возможность ksh . В документации большинства современных дистрибутивов Linux указано использование kill -HUP <processID> для отправки сигнала SIGHUP. [3]

Программы- демоны иногда используют SIGHUP в качестве сигнала для перезапуска, наиболее распространенной причиной этого является повторное чтение файла конфигурации, который был изменен.

Подробности

[ редактировать ]

Символические имена сигналов используются, поскольку номера сигналов могут различаться в зависимости от платформы, но XSI -совместимые системы позволяют использовать числовую константу 1 для обозначения SIGHUP, которую фактически использует подавляющее большинство систем.

SIGHUP может быть обработан . То есть программисты могут определить действие, которое они хотят выполнить при получении SIGHUP, например вызов функции , ее игнорирование или восстановление действия по умолчанию.

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

  1. ^ Керриск, Майкл, изд. (25 июля 2009 г.), «SIGNAL(7)» , Руководство программиста Linux (версия 3.22) , Архивы ядра Linux , получено 23 сентября 2009 г.
  2. ^ Гаррелс, Махтельт, изд. (27 декабря 2008 г.), «Сигналы» , Bash Guide для начинающих, вер. 1.11 , Проект документации Linux , получено 23 сентября 2009 г.
  3. ^ Керриск, Майкл, изд. (25 июля 2009 г.), «KILL(2)» , Руководство программиста Linux (версия 3.22) , Архивы ядра Linux , получено 23 сентября 2009 г.

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: efae75492b3da72f325b4b401e5f5a47__1687130400
URL1:https://arc.ask3.ru/arc/aa/ef/47/efae75492b3da72f325b4b401e5f5a47.html
Заголовок, (Title) документа по адресу, URL1:
SIGHUP - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)