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  }