Python 3.5+signalпонятие
signal.Handlers
обработчики
Перечисление IntEnum из двух особых обработчиков: SIG_DFL (реакция ОС по умолчанию) и SIG_IGN (игнорировать сигнал).
Синтаксис
signal.Handlers.SIG_DFL, signal.Handlers.SIG_IGN
Члены — целые числа 0 и 1, поэтому SIG_DFL ложно в if: проверка «if signal.getsignal(s):» перепутает «реакция по умолчанию» с «обработчика нет». Сравнивайте явно через == или is. SIG_IGN, установленный до exec, наследуется дочерним процессом — так «потерянный» Ctrl+C переходит в запущенную программу.
Примеры
import signal
print(list(signal.Handlers)) # → [<Handlers.SIG_DFL: 0>, <Handlers.SIG_IGN: 1>]
h = signal.getsignal(signal.SIGTERM)
print(bool(h), h is signal.SIG_DFL) # → False True — ложно, но обработчик есть
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности