github.com/pavlo67/common@v0.5.3/common/control/control.go (about) 1 package control 2 3 import ( 4 "fmt" 5 "os" 6 "os/signal" 7 "syscall" 8 9 "github.com/pavlo67/common/common/logger" 10 ) 11 12 var signalChan = make(chan os.Signal, 1000) 13 14 func Init(l logger.Operator) error { 15 if l == nil { 16 return fmt.Errorf("on control.Init: no logger") 17 } 18 signal.Notify(signalChan, syscall.SIGPIPE) 19 20 go processSignal(l) 21 22 return nil 23 } 24 25 func processSignal(l logger.Operator) { 26 for { 27 sig := <-signalChan 28 29 if sig == syscall.SIGPIPE { 30 signal.Reset(sig) 31 l.Warnf("got & ignored signal %s", sig) 32 } else { 33 l.Warnf("got signal %s", sig) 34 } 35 } 36 }