github.com/stevenmatthewt/agent@v3.5.4+incompatible/signalwatcher/watcher_unix.go (about) 1 // +build !windows 2 3 package signalwatcher 4 5 import ( 6 "os" 7 "os/signal" 8 "syscall" 9 ) 10 11 func Watch(callback func(Signal)) { 12 signals := make(chan os.Signal, 1) 13 signal.Notify(signals, os.Interrupt, 14 syscall.SIGHUP, 15 syscall.SIGTERM, 16 syscall.SIGINT, 17 syscall.SIGQUIT) 18 19 go func() { 20 sig := <-signals 21 22 if sig == syscall.SIGHUP { 23 go callback(HUP) 24 } else if sig == syscall.SIGTERM { 25 go callback(TERM) 26 } else if sig == syscall.SIGINT { 27 go callback(INT) 28 } else { 29 go callback(QUIT) 30 } 31 32 Watch(callback) 33 }() 34 }