github.com/gogf/gf@v1.16.9/.example/os/gproc/signal/signal_handler.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "os/signal" 7 "syscall" 8 "time" 9 ) 10 11 func signalHandlerForMQ() { 12 var ( 13 sig os.Signal 14 receivedChan = make(chan os.Signal) 15 ) 16 signal.Notify( 17 receivedChan, 18 syscall.SIGINT, 19 syscall.SIGQUIT, 20 syscall.SIGKILL, 21 syscall.SIGTERM, 22 syscall.SIGABRT, 23 ) 24 for { 25 sig = <-receivedChan 26 fmt.Println("MQ is shutting down due to signal:", sig.String()) 27 time.Sleep(time.Second) 28 fmt.Println("MQ is shut down smoothly") 29 return 30 } 31 } 32 33 func main() { 34 fmt.Println("Process start, pid:", os.Getpid()) 35 go signalHandlerForMQ() 36 37 var ( 38 sig os.Signal 39 receivedChan = make(chan os.Signal) 40 ) 41 signal.Notify( 42 receivedChan, 43 syscall.SIGINT, 44 syscall.SIGQUIT, 45 syscall.SIGKILL, 46 syscall.SIGTERM, 47 syscall.SIGABRT, 48 ) 49 for { 50 sig = <-receivedChan 51 fmt.Println("MainProcess is shutting down due to signal:", sig.String()) 52 return 53 } 54 }