相关疑难解决方法(0)

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

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

这在Golang有可能吗?

注意:当我第一次发布问题时,我很困惑Ctrl+CSIGTERM不是SIGINT.

signals go sigterm

191
推荐指数
5
解决办法
9万
查看次数

使用golang在Windows和Linux中捕获ctrl + c或任何其他进程终止信号

我试图在go中构建一个聊天室应用程序,并且我想在客户端使用ctrl + c或按终端的关闭按钮时调用注销功能。
我尝试了此处此处给出的方法,但是它们没有捕获任何信号(在Windows 10和Fedora 23中尝试过)。这是我的代码段,

sigc := make(chan os.Signal, 1)
signal.Notify(sigc,
    syscall.SIGHUP,
    syscall.SIGINT,
    syscall.SIGTERM,
    syscall.SIGQUIT)
go func() {
    _ = <-sigc
    fmt.Println("ctrl+c pressed")
    client.Logout()
}()
Run Code Online (Sandbox Code Playgroud)

我还有其他使用goroutine并发运行的函数,这是该函数无法捕获任何信号的原因吗?

任何帮助,将不胜感激。

linux windows signals go

3
推荐指数
1
解决办法
1644
查看次数

标签 统计

go ×2

signals ×2

linux ×1

sigterm ×1

windows ×1