signal.Notify() を使って、channel 経由でシグナルを受信する
package main
import (
"log"
"os"
"os/signal"
"syscall"
)
func signalHandler(c chan os.Signal) {
OUT_OF_FOR:
for sig := range c {
log.Printf("%v", sig)
switch sig {
case syscall.SIGTERM:
log.Println("program will be exit")
break OUT_OF_FOR
}
}
}
func main() {
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT)
signalHandler(c)
}