Dans le contexte d'un serveur HTTP démarré à l'aide de http.Handle, la question se pose de savoir comment effectuer des opérations spécifiques en fin de l'exécution du programme. Ce scénario inclut également la gestion des cas où le programme est arrêté via Ctrl-C.
Pour les systèmes Linux, cette tâche peut être accomplie en exploitant le package os.Signal pour capturer et gérer les signaux. La réponse fournie utilise os.Interrupt pour détecter un événement Ctrl-C et lancer les opérations souhaitées avant de quitter.
L'extrait de code fourni démontre la mise en œuvre de cette approche :
import ( "log" "os" "os/signal" ) func main() { // Create a channel to receive signals sigchan := make(chan os.Signal) // Register to receive interrupt signals signal.Notify(sigchan, os.Interrupt) // Start a goroutine to handle signals go func() { // Wait for an interrupt signal <-sigchan // Log the event log.Println("Program killed!") // Perform final actions and wait for write operations to complete // Exit cleanly os.Exit(0) }() // Start the main program tasks }
Avec ceci implémentation, la goroutine main() peut poursuivre les tâches principales du programme. Dès réception de l'interruption Ctrl-C, la goroutine du signal gérera les opérations de nettoyage avec élégance, puis terminera le programme.
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!