サーチ…


構文

  • func通知(c chan < - os.Signal、sig ... os.Signal)

パラメーター

パラメータ詳細
c chan < - os.Signal os.Signal型のchannel受信していchannelsigChan := make(chan os.Signal)簡単に作成できsigChan := make(chan os.Signal)
sig ... os.Signal このchannelを捕捉して送るos.Signalタイプのリスト。他のオプションについては、 https://golang.org/pkg/syscall/#pkg-constantsを参照してください

チャンネルに信号を割り当てる

多くの場合、プログラムがOSによって停止し、状態を保持するために何らかのアクションを取るように指示されたとき、またはアプリケーションをクリーンアップするときにキャッチする理由があります。これを実現するには、標準ライブラリの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は、 SIGINT信号を送るキーボードコマンドCTRL+Cです。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow