Go
OS-Signale
Suche…
Syntax
- func Notify (c chan <- os.Signal, sig ... os.Signal)
Parameter
Parameter | Einzelheiten |
---|---|
c chan <- os.Signal | channel speziell vom Typ os.Signal ; einfach mit sigChan := make(chan os.Signal) |
sig ... os.Signal | Liste der os.Signal Typen, die diesen channel abfangen und os.Signal . Weitere Optionen finden Sie unter https://golang.org/pkg/syscall/#pkg-constants . |
Signale einem Kanal zuordnen
In vielen Fällen haben Sie Grund zu erfahren, wann Ihr Programm aufgefordert wird, beim Betriebssystem anzuhalten und Maßnahmen zu ergreifen, um den Status zu erhalten oder Ihre Anwendung zu bereinigen. Dazu können Sie das os/signal
Paket aus der Standardbibliothek verwenden. Nachfolgend finden Sie ein einfaches Beispiel, um alle Signale des Systems einem Kanal zuzuweisen und anschließend auf diese Signale zu reagieren.
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)
}
}
Wenn Sie das obige Skript ausführen, wird ein Kanal erstellt und dann blockiert, bis dieser Kanal ein Signal empfängt.
$ go run signals.go
^CReceived signal from OS: interrupt
Das ^C
oben ist der Tastaturbefehl CTRL+C
der das SIGINT
Signal sendet.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow