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