package daemon import ( "os" "os/signal" "syscall" "github.com/rs/zerolog/log" ) var ( Interrupt = os.Interrupt Quit os.Signal = syscall.SIGQUIT Terminate os.Signal = syscall.SIGTERM ) // WaitForSignal waits until one of the specified signals are received. func WaitForSignal(sig ...os.Signal) os.Signal { ch := make(chan os.Signal, 1) signal.Notify(ch, sig...) s := <-ch log.Debug(). Str("signal", s.String()). Msg("Signal caught") return s } // WaitForSignalsDefault waits until one of SIGINT, SIGQUIT or SIGTERM is received. func WaitForSignalsDefault() { WaitForSignal(Interrupt, Quit, Terminate) }