gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/gox/osx/signalx/signal.go (about) 1 package signalx 2 3 import ( 4 "fmt" 5 "os" 6 "os/signal" 7 "syscall" 8 ) 9 10 // WaitSignal register signals Handler. 11 // https://blog.csdn.net/js_xj/article/details/6692440?locationNum=6&fps=1 12 func WaitSignal(handler func()) { 13 14 c := make(chan os.Signal, 1) 15 signal.Notify(c, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT /*, syscall.SIGSTOP*/, syscall.SIGABRT, syscall.SIGKILL) 16 for { 17 s := <-c 18 19 switch s { 20 case syscall.SIGQUIT, syscall.SIGTERM /*syscall.SIGSTOP, */, syscall.SIGINT, syscall.SIGABRT, syscall.SIGKILL: 21 handler() 22 case syscall.SIGHUP: 23 handler() 24 default: 25 } 26 27 fmt.Println("signal exit: ", s.String()) 28 os.Exit(0) 29 } 30 } 31 32 func reload() { 33 }