signals - 是否可以以 "defer"方式捕获 Ctrl+C 信号 (SIGINT) 并运行清理功能?

标签 signals go sigterm

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

最佳答案

您可以使用 os/signal处理传入信号的包。 Ctrl+CSIGINT ,因此您可以使用它来捕获 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 信号 (SIGINT) 并运行清理功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57151617/

相关文章:

在我处理 SIGINT 后,C minishell 不会立即返回

object - 具有多种返回类型的接口(interface)方法

bash - 我应该以什么顺序发送信号以正常关闭进程?

linux - 如何让 Linux 等到我的程序完成其 SIGTERM 操作?

从其他函数安装时,C 信号处理程序不会卸载

linux - 如何取消挂起的信号?

c - 处理信号后如何停止从键盘读取?

amazon-web-services - 尝试在 awsgosdk 的帮助下在 terratest 中调用 cloudwatch loggroupname 和 logstreamname

http - 在Golang中获取请求

python - 即使使用信号处理程序,数据库调用也会中断