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
Libérer: 2024-12-19 06:52:14
original
759 Les gens l'ont consulté

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal