Go
Sygnały systemu operacyjnego
Szukaj…
Składnia
- func Notify (c chan <- os.Signal, sig ... os.Signal)
Parametry
Parametr | Detale |
---|---|
c chan <- os.Signal | channel odbiorczy konkretnie typu os.Signal ; łatwo tworzone za pomocą sigChan := make(chan os.Signal) |
sig ... os.Signal | Lista typów os.Signal do przechwycenia i wysłania w dół tego channel . Więcej opcji znajdziesz na https://golang.org/pkg/syscall/#pkg-constants . |
Przypisywanie sygnałów do kanału
Często będziesz miał powód, aby złapać, gdy twój system nakazuje systemowi zatrzymać się i podjąć pewne działania w celu zachowania stanu lub wyczyszczenia aplikacji. Aby to osiągnąć, możesz użyć pakietu os/signal
ze standardowej biblioteki. Poniżej znajduje się prosty przykład przypisania wszystkich sygnałów z systemu do kanału, a następnie sposób reagowania na te sygnały.
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)
}
}
Po uruchomieniu powyższego skryptu utworzy kanał, a następnie zablokuje, dopóki kanał nie odbierze sygnału.
$ go run signals.go
^CReceived signal from OS: interrupt
^C
powyżej to polecenie klawiaturowe CTRL+C
które wysyła sygnał SIGINT
.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow