github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/signal/signal.go (about) 1 package signal 2 3 import ( 4 "os" 5 "os/signal" 6 ) 7 8 // SetupHandler will call handler when signal received 9 func SetupHandler(handler func(os.Signal), s ...os.Signal) { 10 sigCh := make(chan os.Signal, 1) 11 12 if len(s) == 0 { 13 panic("signal missing") 14 } 15 16 signal.Notify(sigCh, s...) 17 18 go func() { 19 for sig := range sigCh { 20 handler(sig) 21 } 22 }() 23 }