Go
Señales OS
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