Buscar..


Sintaxis

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

Parámetros

Parámetro Detalles
c chan <- os.Signal channel receptor específicamente del tipo os.Signal ; creado fácilmente con sigChan := make(chan os.Signal)
sig ... os.Signal Lista de tipos de os.Signal para capturar y enviar este channel . Consulte https://golang.org/pkg/syscall/#pkg-constants para obtener más opciones.

Asignar señales a un canal

Muchas veces tendrá motivos para detectar cuándo el sistema operativo le indica a su programa que se detenga en el sistema operativo y tome algunas medidas para preservar el estado o limpiar su aplicación. Para lograr esto, puede usar el paquete os/signal de la biblioteca estándar. A continuación se muestra un ejemplo simple de asignación de todas las señales del sistema a un canal, y luego cómo reaccionar ante esas señales.

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

Cuando ejecute el script anterior, creará un canal y luego lo bloqueará hasta que ese canal reciba una señal.

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

La ^C anterior es el comando de teclado CTRL+C que envía la señal SIGINT .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow