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