54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
|
package bootstrap
|
||
|
|
||
|
import (
|
||
|
log "github.com/cihub/seelog"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
func HandleSignal(stop chan bool) {
|
||
|
sigs := make(chan os.Signal, 1)
|
||
|
|
||
|
signal.Notify(sigs,
|
||
|
os.Kill,
|
||
|
os.Interrupt,
|
||
|
syscall.SIGKILL,
|
||
|
syscall.SIGSTOP,
|
||
|
syscall.SIGHUP,
|
||
|
syscall.SIGINT,
|
||
|
syscall.SIGTERM,
|
||
|
syscall.SIGQUIT,
|
||
|
)
|
||
|
|
||
|
go func() {
|
||
|
for {
|
||
|
s := <-sigs
|
||
|
switch s {
|
||
|
case os.Kill, os.Interrupt, syscall.SIGSTOP, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT:
|
||
|
log.Infof("Signal received. [%s]", s)
|
||
|
stop <- true
|
||
|
default:
|
||
|
log.Infof("Signal received. [%s]", s)
|
||
|
stop <- true
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
|
||
|
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
|
||
|
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
|
||
|
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
|
||
|
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
|
||
|
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
|
||
|
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
|
||
|
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
|
||
|
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
|
||
|
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
|
||
|
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
|
||
|
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
|
||
|
63) SIGRTMAX-1 64) SIGRTMAX
|
||
|
*/
|