Поиск…


Синтаксис

  • 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