Ricerca…


Sintassi

  • func Notifica (c chan <- os.Signal, sig ... os.Signal)

Parametri

Parametro Dettagli
c chan <- os.Signal Ricevere il channel specificatamente di tipo os.Signal ; facilmente creato con sigChan := make(chan os.Signal)
sig ... os.Signal Elenco di tipi os.Signal per catturare e inviare questo channel . Vedi https://golang.org/pkg/syscall/#pkg-constants per ulteriori opzioni.

Assegnazione di segnali a un canale

Spesso si avrà motivo di prendere quando al programma viene richiesto di fermarsi dal sistema operativo e intraprendere alcune azioni per preservare lo stato o pulire l'applicazione. Per fare ciò è possibile utilizzare il pacchetto os/signal dalla libreria standard. Di seguito è riportato un semplice esempio di assegnazione di tutti i segnali dal sistema a un canale, e quindi come reagire a tali segnali.

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)
    }
}

Quando si esegue lo script precedente, verrà creato un canale e quindi bloccato fino a quando quel canale non riceve un segnale.

$ go run signals.go 
^CReceived signal from OS: interrupt

Il ^C sopra è il comando da tastiera CTRL+C che invia il segnale SIGINT .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow