все 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Сообщить о неточности