Go
Segnali OS
Ricerca…
Sintassi
- func Notifica (c chan <- os.Signal, sig ... os.Signal)
Parametri
Parametro | Dettagli |
---|---|
c chan <- os.Signal | Ricevere il channel specificatamente di tipo os.Signal ; facilmente creato con sigChan := make(chan os.Signal) |
sig ... os.Signal | Elenco di tipi os.Signal per catturare e inviare questo channel . Vedi https://golang.org/pkg/syscall/#pkg-constants per ulteriori opzioni. |
Assegnazione di segnali a un canale
Spesso si avrà motivo di prendere quando al programma viene richiesto di fermarsi dal sistema operativo e intraprendere alcune azioni per preservare lo stato o pulire l'applicazione. Per fare ciò è possibile utilizzare il pacchetto os/signal
dalla libreria standard. Di seguito è riportato un semplice esempio di assegnazione di tutti i segnali dal sistema a un canale, e quindi come reagire a tali segnali.
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)
}
}
Quando si esegue lo script precedente, verrà creato un canale e quindi bloccato fino a quando quel canale non riceve un segnale.
$ go run signals.go
^CReceived signal from OS: interrupt
Il ^C
sopra è il comando da tastiera CTRL+C
che invia il segnale SIGINT
.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow