Maison >développement back-end >Golang >Comment puis-je gérer avec élégance les actions de fin d'exécution dans un serveur HTTP Go sous Linux ?
Gestion des actions de fin d'exécution pour les serveurs HTTP
Un serveur HTTP démarré avec http.Handle nécessite souvent des actions spécifiques lors de la résiliation. Cet article explore des solutions pour exécuter ces actions efficacement sur les systèmes Linux.
Une approche consiste à capitaliser sur les signaux Unix, en particulier le signal SIGINT déclenché par une interruption Ctrl-C. En enregistrant un gestionnaire de signal pour SIGINT, il devient possible d'effectuer des opérations personnalisées avant la fin du processus.
Le code suivant illustre cette méthode :
import ( "log" "os" "os/signal" "syscall" ) func main() { sigchan := make(chan os.Signal, 1) signal.Notify(sigchan, syscall.SIGINT) go func() { <-sigchan // Wait for SIGINT signal log.Println("Program killed !") // Perform end-of-execution actions here // Wait for write operations to complete os.Exit(0) }() // Start HTTP server and associated tasks }
En configurant une goroutine dédiée pour gérer le signal SIGINT, la goroutine principale peut se concentrer sur l'exécution des tâches principales du programme. Dès réception du SIGINT, la goroutine dédiée déclenche les actions de nettoyage, permettant une sortie en douceur.
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!