func main() {
sig()
}
func sig() {
wg := sync.WaitGroup{}
fmt.Println("start")
go func() {
wg.Add(1)
defer wg.Done()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("Shutdown Server ...1")
}()
go func() {
wg.Add(1)
defer wg.Done()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("Shutdown Server ...2")
time.Sleep(10 * time.Second)
}()
time.Sleep(1 * time.Second)
wg.Wait()
}
ctrl+c以后要等10秒才会退出
运行结果:
start
^C2022/11/30 16:50:02 Shutdown Server ...2
2022/11/30 16:50:02 Shutdown Server ...1
Process finished with the exit code 0