Recherche…


Syntaxe

  • func Notify (c chan <- os.Signal, sig ... os.Signal)

Paramètres

Paramètre Détails
c chan <- os.Signal channel réception spécifiquement du type os.Signal ; facilement créé avec sigChan := make(chan os.Signal)
sig ... os.Signal Liste des types os.Signal à capturer et envoyer sur ce channel . Voir https://golang.org/pkg/syscall/#pkg-constants pour plus d'options.

Assigner des signaux à un canal

Souvent, vous aurez des raisons de vous arrêter lorsque votre programme se fera arrêter par le système d'exploitation et prendra des mesures pour préserver l'état ou nettoyer votre application. Pour ce faire, vous pouvez utiliser le package os/signal de la bibliothèque standard. Vous trouverez ci-dessous un exemple simple d'affectation de tous les signaux du système à un canal, puis de la réaction à ces signaux.

package main

import (
    "fmt"
    "os"
    "os/signal"
)

func main() {
    // create a channel for os.Signal
    sigChan := make(chan os.Signal)

    // assign all signal notifications to the channel 
    signal.Notify(sigChan)

    // blocks until you get a signal from the OS
    select {
    // when a signal is received
    case sig := <-sigChan:
        // print this line telling us which signal was seen
        fmt.Println("Received signal from OS:", sig)
    }
}

Lorsque vous exécutez le script ci-dessus, il créera un canal, puis bloquera jusqu'à ce que ce canal reçoive un signal.

$ go run signals.go 
^CReceived signal from OS: interrupt

Le ^C ci-dessus est la commande clavier CTRL+C qui envoie le signal SIGINT .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow