geck-go/daemon/wait.go

31 lines
626 B
Go
Raw Permalink Normal View History

2021-12-01 19:22:07 +00:00
package daemon
import (
2023-09-01 11:09:25 +00:00
"log/slog"
2021-12-01 19:22:07 +00:00
"os"
"os/signal"
"syscall"
)
var (
Interrupt = os.Interrupt
Quit os.Signal = syscall.SIGQUIT
Terminate os.Signal = syscall.SIGTERM
)
// WaitForSignal waits until one of the specified signals are received.
2022-04-05 19:05:40 +00:00
func WaitForSignal(sig ...os.Signal) os.Signal {
2021-12-01 19:22:07 +00:00
ch := make(chan os.Signal, 1)
signal.Notify(ch, sig...)
s := <-ch
2022-04-05 19:05:40 +00:00
2023-09-01 11:09:25 +00:00
slog.Debug("Signal caught", "signal", s.String())
2022-04-05 19:05:40 +00:00
return s
2021-12-01 19:22:07 +00:00
}
2022-04-05 19:05:40 +00:00
// WaitForSignalsDefault waits until one of SIGINT, SIGQUIT or SIGTERM is received.
func WaitForSignalsDefault() os.Signal {
return WaitForSignal(Interrupt, Quit, Terminate)
2021-12-01 19:22:07 +00:00
}