你们能用EPOLLHUP为我提供一个很好的示例代码来处理死者吗?我知道这是检测到用户断开连接的信号,但不确定如何在代码中使用它。
您EPOLLRDHUP没有检测到同级关闭EPOLLHUP(这表明套接字意外关闭,即通常是内部错误)。
EPOLLRDHUP
EPOLLHUP
使用它非常简单,只需将标志与您要赋予的其他标志“或”即可epoll_ctl。因此,例如,代替EPOLLINwrite EPOLLIN|EPOLLRDHUP。
epoll_ctl
EPOLLIN
EPOLLIN|EPOLLRDHUP
之后epoll_wait,if(my_event.events & EPOLLRDHUP)如果另一端关闭了连接(可能要关闭套接字),请执行随后要执行的操作。
epoll_wait
if(my_event.events & EPOLLRDHUP)
请注意,从套接字读取时获得“零字节读取”结果 还 意味着另一端已经关闭了连接,因此您也应该始终检查该连接,以避免令人讨厌的意外(FIN可能是 在 从网络唤醒 后 可能到达EPOLLIN但 在 致电 之前read,如果您处于ET模式,则不会再收到其他通知)。
FIN
read