27 lines
493 B
Go
27 lines
493 B
Go
|
package util
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
// HandlerExit handler exit signal
|
||
|
func HandlerExit(exitFn func(s os.Signal) int) {
|
||
|
sch := make(chan os.Signal, 1)
|
||
|
signal.Notify(sch, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
|
||
|
s := <-sch
|
||
|
os.Exit(exitFn(s))
|
||
|
}
|
||
|
|
||
|
// HandlerReload handler Reload signal
|
||
|
func HandlerReload(reload func(s os.Signal)) {
|
||
|
go func() {
|
||
|
sch := make(chan os.Signal, 1)
|
||
|
signal.Notify(sch, syscall.SIGHUP)
|
||
|
for s := range sch {
|
||
|
reload(s)
|
||
|
}
|
||
|
}()
|
||
|
}
|