Maison >développement back-end >Golang >La fonction « defer » de Go peut-elle gérer SIGINT pour une terminaison propre du programme ?
Trapping SIGINT avec des fonctions de report
Question : Est-il possible de gérer le signal Ctrl C (SIGINT) et exécuter une fonction de nettoyage avant le programme résiliation ?
Réponse :
Oui, vous pouvez capturer le signal SIGINT et exécuter une fonction de nettoyage de manière "différée" à l'aide du package os/signal dans Go.
La fonction signal.Notify vous permet d'enregistrer un canal pour recevoir des notifications sur des signaux spécifiques, tels que os.Interrupt (qui représente le signal SIGINT généré par Ctrl C) :
c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt)
Ensuite, démarrez une goroutine qui attend les signaux entrants :
go func(){ for sig := range c { // Handle the sig interruption } }()
À l'intérieur de la goroutine, vous pouvez effectuer toutes les actions de nettoyage nécessaires lorsque le signal SIGINT est reçu .
La manière dont vous terminez le programme et imprimez les informations est déterminée par votre implémentation spécifique. Vous avez un contrôle total sur le fonctionnement de la fonction de nettoyage et les actions qu'elle effectue.
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!