在 Windows 终端上优雅地退出 golang

我在 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")

}


尚方宝剑之说
浏览 196回答 1
1回答

萧十郎

您的代码工作正常,程序正常退出,我在 Windows 命令提示符下测试了它。为了让您更加信服,请尝试添加time.Sleep(5 * time.Second)after <-done,然后进行测试。当你中断它时,程序只会在5秒后关闭。fmt.Println("awaiting signal")<-donefmt.Println("exiting in 5 seconds")time.Sleep(5 * time.Second)fmt.Println("exit success")尝试os.Interrupt添加signal.Notifysignal.Notify(sigs, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go