Add input signal handler

This commit is contained in:
Daniel 2019-07-19 21:25:38 +02:00
parent ace9e50f70
commit 51c96959aa

22
main.go
View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"bufio"
"flag" "flag"
"fmt" "fmt"
"os" "os"
@ -22,10 +23,12 @@ import (
var ( var (
printStackOnExit bool printStackOnExit bool
enableInputSignals bool
) )
func init() { func init() {
flag.BoolVar(&printStackOnExit, "print-stack-on-exit", false, "prints the stack before of shutting down") 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() { func main() {
@ -47,6 +50,9 @@ func main() {
// Shutdown // Shutdown
// catch interrupt for clean shutdown // catch interrupt for clean shutdown
signalCh := make(chan os.Signal) signalCh := make(chan os.Signal)
if enableInputSignals {
go inputSignals(signalCh)
}
signal.Notify( signal.Notify(
signalCh, signalCh,
os.Interrupt, 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
}
}
}