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  }