From 5310d08bda170e2d394d27410655283e1797b7ff Mon Sep 17 00:00:00 2001 From: Ben Morrison Date: Mon, 13 May 2019 00:42:48 -0400 Subject: watching for ^C. added comments. --- init.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'init.go') diff --git a/init.go b/init.go index c16c49a..bef94af 100644 --- a/init.go +++ b/init.go @@ -4,6 +4,8 @@ import ( "fmt" "log" "os" + "os/signal" + "time" "github.com/fsnotify/fsnotify" "github.com/spf13/pflag" @@ -28,6 +30,7 @@ func init() { titleScreen() initConfig() initLogging() + watchForInterrupt() } func initConfig() { @@ -112,6 +115,28 @@ func rebindConfig() { initLogging() } +// Watch for SIGINT aka ^C +// Close the log file then exit +func watchForInterrupt() { + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + + go func() { + for sigint := range c { + log.Printf("\n\nCaught %v. Cleaning up ...\n", sigint) + + if !confObj.stdoutLogging { + // signal to close the log file + closelog <- true + time.Sleep(20 * time.Millisecond) + } + + close(closelog) + os.Exit(0) + } + }() +} + func titleScreen() { fmt.Printf(` -- cgit 1.4.1-2-gfad0