В процессе работы с Python часто возникает необходимость управлять процессами и соединениями с базами данных. Иногда такие процессы нужно останавливать, совершая при этом необходимую очистку. Для этого можно использовать сигнал SIGINT, который генерируется при нажатии комбинации клавиш Ctrl+C
.
В качестве примера рассмотрим скрипт на Perl, который при получении сигнала SIGINT производит очистку и завершает работу:
$SIG{'INT'} = 'exit_gracefully'; sub exit_gracefully { print "Caught ^C \n"; exit (0); }
Чтобы реализовать аналогичное поведение в Python, необходимо использовать модуль signal
стандартной библиотеки Python.
В этом модуле имеется функция signal()
, которая позволяет задать обработчик для указанного сигнала. Эта функция принимает два аргумента: тип сигнала и функцию-обработчик.
В качестве первого аргумента передается константа signal.SIGINT
, а второй аргумент — это функция, которая будет вызвана при получении сигнала. Функция-обработчик должна принимать два аргумента: номер сигнала и текущий стек вызовов.
Для описания ситуации выше на Python, код будет выглядеть следующим образом:
import signal import sys def exit_gracefully(signal, frame): print('Caught SIGINT') sys.exit(0) signal.signal(signal.SIGINT, exit_gracefully)
Таким образом, при получении сигнала SIGINT скрипт на Python будет корректно завершать свою работу, производя необходимую очистку. Это позволяет избежать возникновения ошибок и облегчает управление ресурсами.
Добавить комментарий