From 51c96959aa5da34797a2a97989cea68d64957ded Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 19 Jul 2019 21:25:38 +0200 Subject: [PATCH] Add input signal handler --- main.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index f7858590..ee79af4e 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "bufio" "flag" "fmt" "os" @@ -21,11 +22,13 @@ import ( ) var ( - printStackOnExit bool + printStackOnExit bool + enableInputSignals bool ) func init() { flag.BoolVar(&printStackOnExit, "print-stack-on-exit", false, "prints the stack before of shutting down") + flag.BoolVar(&enableInputSignals, "input-signals", false, "emulate signals using stdin") } func main() { @@ -47,6 +50,9 @@ func main() { // Shutdown // catch interrupt for clean shutdown signalCh := make(chan os.Signal) + if enableInputSignals { + go inputSignals(signalCh) + } signal.Notify( signalCh, os.Interrupt, @@ -99,3 +105,19 @@ func main() { } } + +func inputSignals(signalCh chan os.Signal) { + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + switch scanner.Text() { + case "SIGHUP": + signalCh <- syscall.SIGHUP + case "SIGINT": + signalCh <- syscall.SIGINT + case "SIGQUIT": + signalCh <- syscall.SIGQUIT + case "SIGTERM": + signalCh <- syscall.SIGTERM + } + } +}