Maison >développement back-end >Golang >Comment effectuer des actions de nettoyage à la fermeture d'un serveur HTTP ?

Comment effectuer des actions de nettoyage à la fermeture d'un serveur HTTP ?

DDD
DDDoriginal
2024-12-19 06:52:14847parcourir

How to Perform Cleanup Actions When an HTTP Server Exits?

Exécuter des actions à la fin du programme

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!

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