我在 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 關注
- 270 瀏覽
添加回答
舉報
0/150
提交
取消