Модуль signal
определяет переменные, представляющие собой сигналы операционной системы.
abort
signal.SIGABRT
,alarm
signal.SIGALRM
,Ctrl+Break
signal.SIGBREAK
,signal.SIGBUS
,signal.SIGCHLD
,signal.SIGCHLD
signal.SIGCLD
,signal.SIGCONT
,signal.SIGFPE
,signal.SIGHUP
,signal.SIGILL
,Ctrl+C
signal.SIGINT
,Kill
signal.SIGKILL
,PIPE
signal.SIGPIPE
,signal.SIGSEGV
,signal.SIGTERM
,signal.SIGUSR1
,signal.SIGUSR2
,signal.SIGWINCH
,Ctrl+C
в Windows signal.CTRL_C_EVENT
,Ctrl+Break
в Windows signal.CTRL_BREAK_EVENT
,signal.NSIG
,Примечание для SIG*
:
Все номера сигналов определены символически. Например, сигнал зависания определяется как signal.SIGHUP
; Имена переменных идентичны именам, используемым в программах на языке C, как в файле signal.h
. В справочной странице Unix для функции signal()
перечислены существующие сигналы, в некоторых системах это signal(2)
, в других - в signal(7)
.
Обратите внимание, что не все системы определяют одинаковый набор имен сигналов. Модуль signal
определяет только те имена, которые определены системой.
signal.SIGABRT
:Переменная signal.SIGABRT
прерывает сигнал от abort(3).
signal.SIGALRM
:Переменная signal.SIGALRM
это сигнал таймера от alarm(2).
Доступность: Unix.
signal.SIGBREAK
:Переменная signal.SIGBREAK
определяет сигнал прерывания с клавиатуры CTRL + BREAK.
Доступность: Windows.
signal.SIGBUS
:Переменная signal.SIGBUS
определяет сигнал ошибки шины (ошибка доступа к памяти).
Доступность: Unix.
signal.SIGCHLD
:Переменная signal.SIGCHLD
определяет сигнал - дочерний процесс остановлен или завершен.
Доступность: Windows.
signal.SIGCLD
:Переменная signal.SIGCLD
это псевдоним для signal.SIGCHLD
.
signal.SIGCONT
:Переменная signal.SIGCONT
определяет сигнал - продолжить процесс, если он в данный момент остановлен.
Доступность: Unix.
signal.SIGFPE
:Переменная signal.SIGFPE
представляет собой сигнал исключения с плавающей точкой. Например, деление на ноль.
Смотрите также исключение ZeroDivisionError
, которое возникает, когда второй аргумент операции деления или по модулю равен нулю.
signal.SIGHUP
:Переменная signal.SIGHUP
определяет сигнал - обнаружено зависание на управляющем терминале или завершение процесса управления.
Доступность: Unix.
signal.SIGILL
:Переменная signal.SIGILL
определяет сигнал - неправильная инструкция.
signal.SIGINT
:Переменная signal.SIGINT
определяет сигнал прерывания с клавиатуры CTRL + C.
Действие по умолчанию - поднять исключение KeyboardInterrupt
.
signal.SIGKILL
:Переменная signal.SIGKILL
определяет сигнал Kill
.
Этот сигнал нельзя поймать, заблокировать или игнорировать.
Доступность: Unix.
signal.SIGPIPE
:Переменная signal.SIGPIPE
определяет сигнал - прерывание pipe
: пишите в pipe
без читателей.
Действие по умолчанию - игнорировать сигнал.
Доступность: Unix.
signal.SIGSEGV
:Переменная signal.SIGSEGV
определяет сигнал - ошибка сегментации: неверная ссылка на память.
signal.SIGTERM
:Переменная signal.SIGTERM
определяет сигнал завершения.
signal.SIGUSR1
:Переменная signal.SIGUSR1
определяет пользовательский сигнал №1.
Доступность: Unix.
signal.SIGUSR2
:Переменная signal.SIGUSR2
определяет пользовательский сигнал №2.
Доступность: Unix.
signal.SIGWINCH
:Переменная signal.SIGWINCH
определяет сигнал изменения размера окна.
Доступность: Unix.
signal.CTRL_C_EVENT
:Переменная signal.CTRL_C_EVENT
определяет сигнал, соответствующий событию нажатия клавиш Ctrl+C. Этот сигнал может использоваться только с функцией os.kill()
.
Доступность: Windows.
signal.CTRL_BREAK_EVENT
:Переменная signal.CTRL_BREAK_EVENT
определяет сигнал, соответствующий событию нажатия клавиши Ctrl+Break. Этот сигнал может использоваться только с функцией os.kill()
.
Доступность: Windows.
New in version 3.2.
signal.NSIG
:Переменная signal.NSIG
определяет сигнал, который на один больше номера самого высокого номера сигнала.
Полезно для получения действительных номеров сигналов на данной платформе, например range(1, signal.NSIG)
.
Дополнительно смотрите функцию signal.valid_signals()
.
Ниже представлены зарегистрированные обработчики сигналов или одно из специальных значений signal.SIG_IGN
- если сигнал игнорируется, signal.SIG_DFL
- если используется поведение по умолчанию или None
- если существующий обработчик сигнала был зарегистрирован из языка C, а не Python.
import signal def alarm_received(n, stack): return signal.signal(signal.SIGALRM, alarm_received) signals_to_names = { getattr(signal, n): n for n in dir(signal) if n.startswith('SIG') and '_' not in n } for s, name in sorted(signals_to_names.items()): handler = signal.getsignal(s) if handler is signal.SIG_DFL: handler = 'SIG_DFL' elif handler is signal.SIG_IGN: handler = 'SIG_IGN' print('{:<10} ({:2d}):'.format(name, s), handler)
В каждой ОС могут быть определены разные сигналы, выходные данные в других системах могут отличаться. Вывод представлен для Debian.
SIGHUP ( 1): SIG_DFL SIGINT ( 2): <built-in function default_int_handler> SIGQUIT ( 3): SIG_DFL SIGILL ( 4): SIG_DFL SIGTRAP ( 5): SIG_DFL SIGIOT ( 6): SIG_DFL SIGBUS ( 7): SIG_DFL SIGFPE ( 8): SIG_DFL SIGKILL ( 9): SIG_DFL SIGUSR1 (10): SIG_DFL SIGSEGV (11): SIG_DFL SIGUSR2 (12): SIG_DFL SIGPIPE (13): SIG_IGN SIGALRM (14): <function alarm_received at 0x7f8972279e18> SIGTERM (15): SIG_DFL SIGCLD (17): SIG_DFL SIGCONT (18): SIG_DFL SIGSTOP (19): SIG_DFL SIGTSTP (20): SIG_DFL SIGTTIN (21): SIG_DFL SIGTTOU (22): SIG_DFL SIGURG (23): SIG_DFL SIGXCPU (24): SIG_DFL SIGXFSZ (25): SIG_IGN SIGVTALRM (26): SIG_DFL SIGPROF (27): SIG_DFL SIGWINCH (28): SIG_DFL SIGPOLL (29): SIG_DFL SIGPWR (30): SIG_DFL SIGSYS (31): SIG_DFL SIGRTMIN (34): SIG_DFL SIGRTMAX (64): SIG_DFL