我正在尝试在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运行同时,是不是这个功能没有捕捉任何信号背后的原因是什么?

任何帮助,将不胜感激。

+0

在unix上捕获信号很好,所以你需要显示随附的代码。我不是很熟悉Windows,因为IIRC你不能捕获ctrl + c作为信号,它必须由终端处理。 –

+0

@JimB剩下的代码可以在这里查看(https://github.com/GOOFS/go-goof-Talk/blob/master/client/client.go)。但是,这并没有我上面提到的代码片段。 –