31 lines
617 B
Go
31 lines
617 B
Go
package xos
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
func WatchSignal(notify func(signal2 os.Signal)) {
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
|
|
for {
|
|
s := <-c
|
|
switch s {
|
|
case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL:
|
|
notify(s)
|
|
return
|
|
case syscall.SIGHUP:
|
|
// TODO reload
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func WatchSignal1() chan os.Signal {
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
|
|
return c
|
|
}
|