Go
Сигналы ОС
Поиск…
Синтаксис
- func Notify (c chan <- os.Signal, sig ... os.Signal)
параметры
параметр | подробности |
---|---|
c chan <- os.Signal | Прием channel частности, типа os.Signal ; легко создается с помощью sigChan := make(chan os.Signal) |
sig ... os.Signal | Список типов os.Signal для улавливания и отправки этого channel . Подробнее см. Https://golang.org/pkg/syscall/#pkg-constants . |
Назначение сигналов каналу
Часто у вас будет причина ловить, когда вашей программе будет предложено остановиться у операционной системы и предпринять некоторые действия для сохранения состояния или очистки вашего приложения. Для этого вы можете использовать пакет os/signal
из стандартной библиотеки. Ниже приведен простой пример назначения всех сигналов от системы каналу, а затем, как реагировать на эти сигналы.
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)
}
}
Когда вы запустите указанный выше сценарий, он создаст канал, а затем заблокирует, пока этот канал не получит сигнал.
$ go run signals.go
^CReceived signal from OS: interrupt
В приведенной выше ^C
есть команда клавиатуры CTRL+C
которая посылает сигнал SIGINT
.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow