diff options
Diffstat (limited to 'shutdown.go')
| -rw-r--r-- | shutdown.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/shutdown.go b/shutdown.go new file mode 100644 index 0000000..7147bdc --- /dev/null +++ b/shutdown.go @@ -0,0 +1,28 @@ +package main + +import ( + "log" + "os" + "os/signal" + "syscall" + "time" +) + +var ( + Signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT} +) + +func Shutdown() { + ch := make(chan os.Signal, 0) + signal.Notify(ch, Signals...) + + s := <-ch + if s != nil { + log.Printf("Received signal '%s'.", s) + con.Quit() + log.Print("Terminating in 5 seconds.") + time.Sleep(time.Second * 5) + log.Printf("Terminating because of signal '%s'", s) + os.Exit(0) + } +} |
