Go
OS-signaler
Sök…
Syntax
- func Meddela (c chan <- os.Signal, sig ... os.Signal)
parametrar
Parameter | detaljer |
---|---|
c chan <- os.Signal | Mottagande channel specifikt av typen os.Signal ; enkelt skapad med sigChan := make(chan os.Signal) |
sig ... os.Signal | Lista över os.Signal att fånga och skicka ner den här channel . Se https://golang.org/pkg/syscall/#pkg-constants för fler alternativ. |
Tilldela signaler till en kanal
Ofta har du skäl att fånga när ditt program får höra att stoppa av operativsystemet och vidta några åtgärder för att bevara staten eller städa upp din ansökan. För att åstadkomma detta kan du använda paketet os/signal
från standardbiblioteket. Nedan följer ett enkelt exempel på att tilldela alla signaler från systemet till en kanal och sedan hur man reagerar på dessa signaler.
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)
}
}
När du kör ovanstående skript skapar det en kanal och blockerar sedan tills den kanalen får en signal.
$ go run signals.go
^CReceived signal from OS: interrupt
^C
ovan är tangentbordskommandot CTRL+C
som skickar SIGINT
signalen.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow