github.com/Benchkram/bob@v0.0.0-20220321080157-7c8f3876e225/pkg/wait/wait.go (about)

     1  package wait
     2  
     3  import (
     4  	"os"
     5  	"os/signal"
     6  	"sync"
     7  	"syscall"
     8  )
     9  
    10  // ForCtrlC https://jjasonclark.com/waiting_for_ctrl_c_in_golang/
    11  func ForCtrlC() {
    12  	var endWaiter sync.WaitGroup
    13  	endWaiter.Add(1)
    14  	signalChannel := make(chan os.Signal, 1)
    15  	signal.Notify(signalChannel, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
    16  	go func() {
    17  		<-signalChannel
    18  		endWaiter.Done()
    19  	}()
    20  	endWaiter.Wait()
    21  }