我想捕获从控制台发送的Ctrl+C(SIGINT)信号并打印出一些部分运行总计.
这在Golang有可能吗?
注意:当我第一次发布问题时,我很困惑Ctrl+C而SIGTERM不是SIGINT.
我试图在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并发运行的函数,这是该函数无法捕获任何信号的原因吗?
任何帮助,将不胜感激。