サーチ…
構文
- func通知(c chan < - os.Signal、sig ... os.Signal)
パラメーター
パラメータ | 詳細 |
---|---|
c chan < - os.Signal | os.Signal 型のchannel 受信していchannel 。 sigChan := 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