一尘不染

我如何使用EPOLLHUP

linux

你们能用EPOLLHUP为我提供一个很好的示例代码来处理死者吗?我知道这是检测到用户断开连接的信号,但不确定如何在代码中使用它。


阅读 404

收藏
2020-06-07

共1个答案

一尘不染

EPOLLRDHUP没有检测到同级关闭EPOLLHUP(这表明套接字意外关闭,即通常是内部错误)。

使用它非常简单,只需将标志与您要赋予的其他标志“或”即可epoll_ctl。因此,例如,代替EPOLLINwrite
EPOLLIN|EPOLLRDHUP

之后epoll_waitif(my_event.events & EPOLLRDHUP)如果另一端关闭了连接(可能要关闭套接字),请执行随后要执行的操作。

请注意,从套接字读取时获得“零字节读取”结果 意味着另一端已经关闭了连接,因此您也应该始终检查该连接,以避免令人讨厌的意外(FIN可能是
从网络唤醒 可能到达EPOLLIN 致电 之前read,如果您处于ET模式,则不会再收到其他通知)。

2020-06-07