いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-264 (シグナルを無視する)(signal.Ignore)

概要

以下、自分用のメモです。よく忘れるのでここにメモメモ。。。

シグナルのハンドリングは、signal.Notifysignal.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

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。