Как захватить SIGINT в Python: несколько методов с примерами кода

Чтобы перехватить SIGINT (прерывание сигнала) в Python, вы можете использовать несколько методов в зависимости от ваших требований. Вот несколько различных подходов с примерами кода:

Метод 1: Использование сигнального модуля

import signal
def handle_sigint(signal, frame):
    print("SIGINT captured")
    # Add your desired actions here
signal.signal(signal.SIGINT, handle_sigint)
# Your main program logic goes here

Метод 2: использование исключения KeyboardInterrupt

try:
    while True:
        # Your main program logic goes here
        pass
except KeyboardInterrupt:
    print("SIGINT captured")
    # Add your desired actions here

Метод 3. Использование потоков

import signal
import threading
def handle_sigint(signal, frame):
    print("SIGINT captured")
    # Add your desired actions here
def main_program():
    while True:
        # Your main program logic goes here
        pass
signal.signal(signal.SIGINT, handle_sigint)
# Create a separate thread for the main program
thread = threading.Thread(target=main_program)
thread.start()
# Wait for the thread to finish
thread.join()

Эти методы позволяют перехватывать сигнал SIGINT и выполнять специальные действия, когда пользователь отправляет сигнал прерывания (например, нажав Ctrl+C). Вы можете заменить операторы печати желаемым кодом или действиями.