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の一部です。