From f782d5d50d310bfde33e48d50f8e7908aa6b0a9b Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 27 Nov 2020 10:33:17 +0000 Subject: Terminate on SIGHUP --- internal/io/signal/signal.go | 18 ++++++++++++------ 1 file 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 } -- cgit v1.2.3