diff --git a/main.go b/main.go index 31b8ac1..6770a6d 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,9 @@ import ( "io/ioutil" "log" "os" + "os/signal" "path" + "syscall" "gopkg.in/alecthomas/kingpin.v2" ) @@ -40,6 +42,20 @@ func main() { } if *asDemon { + // exit cleanly on ctrl-C or kill + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + go func() { + for range c { + // dump history to file so that other apps can query it + err = write(history, histfile) + if err != nil { + log.Fatal(err) + } + os.Exit(0) + } + }() + persist := !*noPersist if err := listen(history, histfile, persist, *max); err != nil { log.Fatal(err)