0

我必须在服务器端和客户端的 AF_INET 套接字中处理哪种信号?

4

1 回答 1

2

根据您正在做的事情的方式,您可能必须处理SIG_PIPE,当连接被任意断开时可能会发生这种情况。

您不必处理任何其他信号。

如果您使用select()orpoll()或(个人喜好)epoll(),您应该检查错误(例如,POLLHUP ,您应该在检查读/写可用性之前) 。

您还应该始终检查read()/write()/send()/recv(). 如果有错误,则返回-1,但如果返回0,则表示另一端断开连接。即,读取 0 确实意味着读取了 0 个字节,但连接仍然良好。它不是。关闭插座。这是 POSIX 规定的。

于 2012-05-06T11:02:43.033 回答