diff options
Diffstat (limited to 'init.go')
-rw-r--r-- | init.go | 25 |
1 files changed, 25 insertions, 0 deletions
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(` |