Go Wiki: SignalHandling

はじめに

アプリケーションは、終了する前に内部状態を保存したり、クリーンアップアクティビティを実行したり、構成ファイルをリロードしたり、オンデマンドでメモリ/CPUプロファイルを作成したりする必要がある場合があります。 UNIXライクなオペレーティングシステムでは、シグナルがこれらのタスクを実行できます。

次のコードは、割り込みシグナルを待機し、発生時に一時ファイルを削除するプログラムを示しています。

package main

import (
    "io/ioutil"
    "os"
    "os/signal"
)

func main() {
    f, err := ioutil.TempFile("", "test")
    if err != nil {
        panic(err)
    }
    defer os.Remove(f.Name())
    defer f.Close()
    sig := make(chan os.Signal, 1)
    signal.Notify(sig, os.Interrupt)
    <-sig
}

このコンテンツはGo Wikiの一部です。