我正在尝试在go中构建chatroom应用程序,并且当客户端使用ctrl + c或按下终端的close按钮时,我想调用注销功能。
我尝试了方法here和here,但他们没有捕获任何信号(在Windows 10和Fedora 23中尝试过)。这里是我的代码片段,通过golang捕获ctrl + c或任何其他进程在windows和linux中终止信号
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()
}()
我有一些其他功能使用的goroutine运行同时,是不是这个功能没有捕捉任何信号背后的原因是什么?
任何帮助,将不胜感激。
在unix上捕获信号很好,所以你需要显示随附的代码。我不是很熟悉Windows,因为IIRC你不能捕获ctrl + c作为信号,它必须由终端处理。 – JimB
@JimB剩下的代码可以在这里查看(https://github.com/GOOFS/go-goof-Talk/blob/master/client/client.go)。但是,这并没有我上面提到的代码片段。 –