Go
Signaux OS
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