diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-11-27 10:33:17 +0000 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-11-27 10:33:17 +0000 |
| commit | f782d5d50d310bfde33e48d50f8e7908aa6b0a9b (patch) | |
| tree | 77bbfa866439fede4b3d7b579d3b1bc1cc6e8da7 | |
| parent | 75aa66c7a8c55773d37d08f3262fec1440003945 (diff) | |
Terminate on SIGHUP
| -rw-r--r-- | internal/io/signal/signal.go | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/internal/io/signal/signal.go b/internal/io/signal/signal.go index 3785d71..9401707 100644 --- a/internal/io/signal/signal.go +++ b/internal/io/signal/signal.go @@ -4,6 +4,7 @@ import ( "context" "os" gosignal "os/signal" + "syscall" "time" "github.com/mimecast/dtail/internal/io/logger" @@ -11,26 +12,31 @@ import ( // StatsCh returns a channel for "please print stats" signalling. func InterruptCh(ctx context.Context) <-chan struct{} { - sigCh := make(chan os.Signal) - gosignal.Notify(sigCh, os.Interrupt) + sigIntCh := make(chan os.Signal) + gosignal.Notify(sigIntCh, os.Interrupt) + + sigOtherCh := make(chan os.Signal) + gosignal.Notify(sigOtherCh, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGQUIT) statsCh := make(chan struct{}) go func() { for { select { - case <-sigCh: + case <-sigIntCh: select { case statsCh <- struct{}{}: - logger.Info("Hit Ctrl+C twice to exit") + logger.Info("Hint: Hit Ctrl+C twice to exit") select { - case <-sigCh: + case <-sigIntCh: os.Exit(0) case <-time.After(time.Second): } default: - // Stats currently already printed. + // Stats already printed. } + case <-sigOtherCh: + os.Exit(0) case <-ctx.Done(): return } |
