我想捕获从控制台发送的 Ctrl+C ( SIGINT ) 信号并打印出一些部分运行总数。

这在 Golang 中可能吗?

注意:当我第一次发布这个问题时,我对 Ctrl+C 是 SIGTERM 而不是 SIGINT 感到困惑。

最佳答案

您可以使用 os/signal 包来处理传入信号。 Ctrl+C 是 SIGINT ,因此您可以使用它来捕获 os.Interrupt

c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func(){
    for sig := range c {
        // sig is a ^C, handle it
    }
}()

您使程序终止和打印信息的方式完全取决于您。

关于signals - 是否可以以 "defer"的方式捕获 Ctrl+C 信号并运行清理功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11268943/

10-16 06:34