我必须在 AF_INET 套接字中处理服务器端和客户端的哪种信号?
最佳答案
根据您正在做的事情的方式,您可能必须处理SIG_PIPE
,当连接被任意中断时可能会发生这种情况。
您不必处理任何其他信号。
如果您使用 select()
或 poll()
或(个人偏好)epoll()
,您应该检查是否有错误(例如, POLLHUP
) 在检查读/写可用性之前。
您还应该始终检查read()/write()/send()/recv()
的返回值。如果出现错误,则返回 -1,但如果返回 0,则意味着另一端已断开连接。即,读取 0 仅意味着读取了 0 个字节,但连接仍然良好。事实并非如此。关闭 socket 。这是 POSIX 规定的。
关于C unix 套接字。需要处理的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469997/