Capturer le signal SIGINT pour un arrêt progressif à l'aide de l'approche « différée »
La gestion des interruptions des utilisateurs est cruciale pour maintenir un arrêt propre de l'application. Un scénario courant implique la capture du signal SIGINT (Ctrl C) pour effectuer des tâches de nettoyage avant de quitter.
Pour capturer SIGINT, vous pouvez utiliser le package os/signal dans Golang. Voici comment procéder :
import ( "fmt" "os" "os/signal" "time" ) func cleanup() { fmt.Println("Performing cleanup operations...") } func main() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) defer cleanup() // Schedule cleanup function to run before main exits for { // Do stuff time.Sleep(time.Second) } }
Lorsque vous appuyez sur Ctrl C, le signal SIGINT est envoyé au programme. La fonction principale capte ce signal via le canal c. La fonction de nettoyage est programmée pour s'exécuter avant la fermeture du programme, grâce au mot-clé defer. Cela garantit que les tâches de nettoyage sont exécutées après toute opération en suspens dans la boucle.
Vous pouvez personnaliser le comportement de la fonction de nettoyage en fonction des besoins de votre application. Par exemple, vous pouvez l'utiliser pour enregistrer des données non enregistrées, fermer des connexions ou effectuer toute autre tâche nécessaire.
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!