C 外壳将要关闭时发出什么信号

C 外壳将要关闭时发出什么信号,c,shell,unix,client,signals,C,Shell,Unix,Client,Signals,我正在unix下用c语言建立一个聊天室。我有一个服务器端和一个客户端。 除了客户端关闭shell窗口外,所有这些都非常有效。 在这种情况下,客户端没有告诉服务器他要去,服务器认为他仍然登录 我想通过按下X按钮来处理客户端关闭终端时的信号。 我的进程得到什么信号?我试图处理SIGHUP、SIGQUIT和SIGTERM,但它们似乎不起作用。当客户端按X关闭终端并在服务器应用程序中捕获相同信号时,您可以发送一个用户定义的信号SIGUSR1或SIGUSR2。为此,您需要获取有关服务器从中接收信号的终端的

我正在unix下用c语言建立一个聊天室。我有一个服务器端和一个客户端。 除了客户端关闭shell窗口外,所有这些都非常有效。 在这种情况下,客户端没有告诉服务器他要去,服务器认为他仍然登录

我想通过按下X按钮来处理客户端关闭终端时的信号。
我的进程得到什么信号?我试图处理SIGHUP、SIGQUIT和SIGTERM,但它们似乎不起作用。

当客户端按X关闭终端并在服务器应用程序中捕获相同信号时,您可以发送一个用户定义的信号SIGUSR1或SIGUSR2。为此,您需要获取有关服务器从中接收信号的终端的信息,需要维护开放终端列表中的终端

有关这些信号的更多说明,请参见信号或的手册页


您正在使用TCP套接字吗?请添加更多详细信息。您可以使用这样一个事实:关闭终端将终止客户端,因此,在服务器端,read函数将返回0。您是否在服务器端使用任何形式的多路复用?如果不是,我建议使用epoll。这样,当您关闭客户端时,关闭客户端上的套接字epoll将为您处理它。看到这个完整的例子,SIGHUP是它应该得到的。也许你的信号处理器有问题。
 Signal     Value     Action   Comment
 ---------------------------------------------------
 SIGUSR1   30,10,16    Term    User-defined signal 1
 SIGUSR2   31,12,17    Term    User-defined signal 2
 SIGTSTP   18,20,24    Stop    Stop typed at tty