問題 deferを使って後処理をしたい場合に、プロセスがCtrl+cなどSIGINTで中断されるとdeferしたものが発火しない。プロセス自体が中断されるのであたりまえなんだけども。 問題の再現 package main import ( "fmt" "time" ) func main() { defer teardown() hoge() fmt.Println("終了") } func hoge() { for i := 0; i < 5; i++ { fmt.Println(i) time.Sleep(1 * time.Second) } } func teardown() { fmt.Println("データのあとかたづけ") } 上記の実行 % go run main.go 0 1 2 3 4 終了 データのあとかたづけ % SIGINTの場合 % go run main.go