Python Glossary English

все Python 3signalфункция

signal.default_int_handler()

обработчики

Стандартный обработчик SIGINT: поднимает KeyboardInterrupt. Его ставят обратно, чтобы вернуть обычную реакцию на Ctrl+C.

Синтаксис

signal.signal(signal.SIGINT, signal.default_int_handler)

Вернуть Ctrl+C «как было» через SIG_DFL — частая ошибка: SIG_DFL означает реакцию ОС, то есть мгновенное завершение процесса без KeyboardInterrupt, без finally и без with. Правильное значение для восстановления — signal.default_int_handler. Если родительский процесс запустил Python с игнорируемым SIGINT, интерпретатор этот обработчик не ставит, и Ctrl+C не сработает вовсе.

Примеры

import signal
signal.signal(signal.SIGINT, signal.SIG_IGN)  # временно глушим Ctrl+C
signal.signal(signal.SIGINT, signal.default_int_handler)  # а не SIG_DFL
try:
    signal.raise_signal(signal.SIGINT)
except KeyboardInterrupt:
    print('KeyboardInterrupt')  # → KeyboardInterrupt

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности