code:
package main
import (
"log"
"os"
"os/signal"
"syscall"
)
func main(){
log.SetFlags(log.Lshortfile | log.LstdFlags)
log.SetPrefix("[signal] ")
log.Println("start...")
sigs := make(chan os.Signal, 1)
done := make(chan bool, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
sig := <-sigs
log.Println(sig)
done <- true
}()
log.Println("wait signal")
<-done
log.Println("exit...")
return
}
result:
[root@jn signal]# go run sig.go
[signal] 2021/09/23 16:52:06 sig.go:13: start...
[signal] 2021/09/23 16:52:06 sig.go:27: wait signal
^C[signal] 2021/09/23 16:52:08 sig.go:23: interrupt
[signal] 2021/09/23 16:52:08 sig.go:30: exit...
[root@jn signal]#