summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-11-27 10:33:17 +0000
committerPaul Buetow <pbuetow@mimecast.com>2020-11-27 10:33:17 +0000
commitf782d5d50d310bfde33e48d50f8e7908aa6b0a9b (patch)
tree77bbfa866439fede4b3d7b579d3b1bc1cc6e8da7 /internal
parent75aa66c7a8c55773d37d08f3262fec1440003945 (diff)
Terminate on SIGHUP
Diffstat (limited to 'internal')
-rw-r--r--internal/io/signal/signal.go18
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
}