概要
以下、自分用のメモです。よく忘れるのでここにメモメモ。。。
シグナルのハンドリングは、signal.Notify
や signal.NotifyContext
で行いますが
たまに、無視したいときもあります。
その場合は、signal.Ignore
を利用します。
サンプル
// signal.Ignore() のサンプルです. // // # REFERENCES // - https://www.developer.com/languages/os-signals-go/ // - https://pkg.go.dev/os/signal@go1.19.3#Ignore package main import ( "fmt" "os" "os/signal" "time" ) func main() { // SIGINTを無視するよう設定 signal.Ignore(os.Interrupt) fmt.Println("SIGINTを無視に設定しています...5秒経つとアプリケーションは終了します.") <-time.After(5 * time.Second) }
実行すると以下のようになります。
$ go run main.go
SIGINTを無視に設定しています...5秒経つとアプリケーションは終了します.
^C^C^C^C^C
signal.Ignore
を設定した後は、CTRL-C
(SIGINT) を送ってもアプリは終了せずに動き続けています。
参考情報
try-golang/examples/signal/ignore at master · devlights/try-golang · GitHub
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。