Maison >développement back-end >Tutoriel Python >Comment puis-je gérer gracieusement les interruptions Ctrl C (SIGINT) en Python ?

Comment puis-je gérer gracieusement les interruptions Ctrl C (SIGINT) en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-18 12:00:18216parcourir

How Can I Gracefully Handle Ctrl C Interrupts (SIGINT) in Python?

Gestion des signaux SIGINT en Python

En Python, vous pouvez répondre aux signaux SIGINT (générés en appuyant sur Ctrl C) en utilisant la fonction signal.signal. Cette fonction enregistre une fonction de gestionnaire qui sera exécutée lorsque le signal spécifié sera reçu. Voici un exemple montrant comment obtenir la même fonctionnalité que le code Perl fourni :

import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

Dans le code ci-dessus :

  • signal_handler est la fonction de gestionnaire enregistrée. Lorsque le signal SIGINT est reçu, cette fonction est appelée et imprime un message pour indiquer que Ctrl C a été enfoncé. Il quitte ensuite le script.
  • signal.signal enregistre la fonction signal_handler en tant que gestionnaire de SIGINT.
  • print('Press Ctrl C') imprime un message sur la console demandant à l'utilisateur d'appuyer sur Ctrl C.
  • signal.pause() entre dans la boucle d'événements et attend que les signaux soient délivrés. Lorsque SIGINT est reçu, la fonction signal_handler est exécutée et le script se termine.

Ce code fournit un moyen efficace de gérer gracieusement les signaux SIGINT en Python et d'effectuer des actions de nettoyage avant de quitter le script.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn