我如何使用EPOLLHUP

你们能给我提供一个很好的示例代码,使用EPOLLHUP进行死对等处理吗? 我知道这是一个信号,以检测用户断开连接,但不知道如何在代码中使用这个..预先感谢..

Solutions Collecting From Web of "我如何使用EPOLLHUP"

您使用EPOLLRDHUP来检测对等关机,而不是EPOLLHUP (这EPOLLHUP套接字意外关闭,即通常是内部错误)。

使用它非常简单,只是“或”与您给epoll_ctl任何其他标志的旗帜。 所以,例如EPOLLIN而不是EPOLLIN|EPOLLRDHUP

epoll_wait之后,执行if(my_event.events & EPOLLRDHUP) ,如果另一端关闭了连接(可能要关闭套接字),然后执行任何你想要做的事情。

请注意,从套接字读取时得到“读取零字节”的结果意味着另一端已经关闭了连接,所以您应该始终检查一下,以避免令人讨厌的意外( FIN可能会您唤醒后从EPOLLIN你打电话之前 read ,如果你在ET模式,你不会得到另一个通知)。