一尘不染

是否可以以“延迟”方式捕获 Ctrl+C 信号并运行清理功能?

go

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

这在 Golang 中可能吗?

注意:当我第一次发布这个问题时,我对Ctrl+CbeSIGTERM而不是SIGINT.


阅读 164

收藏
2021-11-02

共1个答案

一尘不染

您可以使用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
    }
}()

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

2021-11-02