手动停止,defer不执行

windy_ · · 1538 次点击
windy_
君子知命不惧,日日自省
感谢,只是这样就不能在主线程监听http服务,必须另起线程,主线程就浪费了
#2
更多评论
因为手动执行`Ctrl + C`相当于给程序发了个`kill`信号,进程就直接退出了,可以参考下面代码优雅的退出go进程 ```go import ( "fmt" "os" "os/signal" ) func main() { c := make(chan os.Signal) signal.Notify(c) defer func() { fmt.Println("defer...") }() fmt.Println("main 1") //time.Sleep(time.Hour) <-c fmt.Println("main 2") } ```
#1