golangでcliツールを書く際にsigintをプログラムでハンドリングする際の方法
os/signalを使用することで容易にシグナルのハンドリングを行うことができるとのこと。
上記の記事内ではSIGINTについてのハンドリング方法が記載されている。
上記のパッケージとchannelを使用する。
package main import ( "os" "os/signal" "fmt" "syscall" ) func main() { sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGTERM, syscall.SIGINT) switch(sigCh) { case syscall.SIGTERM: fmt.Println("SIGTERM") case syscall.SIGINT: fmt.Println("SIGINT") } }
それにしてもシグナルを検知したらサブ処理を実行って感じの処理がこんなにも簡単に書けちゃうのはすごい。