Python: select.POLLHUP

2024-06-26 13:48:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用选择投票已经注册了POLLIN、POLLERR和POLLHUP。在

我的理解是,当POLLIN事件发生并且recv()没有返回任何数据时,表示对等机已断开连接。我的测试似乎证实了这一点。在

但为什么我不能得到POLLHUP?这有不同的语义吗?在


Tags: 数据语义事件投票recv证实pollerrpollin
1条回答
网友
1楼 · 发布于 2024-06-26 13:48:38

事件值是位图。在

如果你得到波林(值:1),你有东西要读,
如果你得到波勒胡普(数值:16),输入结束,
所以当你得到POLLIN(1)&POLLHUP(16)=17时,这意味着你的输入结束了,你还有东西要从缓冲区读取

从缓冲区中读取所有内容后,每次调用poll()时,只得到POLLHUP一个:
在这种情况下,在轮询列表中保留文件描述符是没有用的,
最好立即注销此文件描述符。在

相关问题 更多 >