我在 Windows 上无法优雅地退出我自己的 go 程序。os.Interrupt 似乎也不起作用。我想知道是否有什么方法可以在终端中优雅地退出golang程序?func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) go func() { sig := <-sigs fmt.Println() fmt.Println(sig) done <- true }() fmt.Println("awaiting signal") <-done fmt.Println("exiting")}
1 回答
萧十郎
TA贡献1815条经验 获得超13个赞
您的代码工作正常,程序正常退出,我在 Windows 命令提示符下测试了它。
为了让您更加信服,请尝试添加time.Sleep(5 * time.Second)after <-done,然后进行测试。当你中断它时,程序只会在5秒后关闭。
fmt.Println("awaiting signal")
<-done
fmt.Println("exiting in 5 seconds")
time.Sleep(5 * time.Second)
fmt.Println("exit success")
尝试os.Interrupt添加signal.Notify
signal.Notify(sigs, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
- 1 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消