小编nca*_*ier的帖子

在封闭的伪终端上停止EPOLLHUP

我正在一个小型图书馆上创建一对相互关联的pts。我使用epoll fd,在其中master fdEPOLLIN事件的两个伪终端注册。当我的示例客户端程序启动时,事件循环处于空闲状态,因此两个客户端(在我的情况下为microcom)打开每个从属设备。但是,当任何一个客户端关闭它的从属端时,它将epoll_wait连续报告EPOLLHUP该从属主机的事件。

为了防止这种情况,我O_WRONLY在每个从属服务器上都打开了一个文件描述符,它可以工作(不再可用EPOLLHUP),但是我认为这不是真正的解决方案,而是更多的黑客手段。在这个情况下。

我试图:

  • 使用边缘触发行为
  • EPOLL_CTL_DEL 然后重新添加制作HUP的主文件

这些尝试均未显示任何结果。

在发生EPOLLHUP之后,是否可以清理“ HUP状态”并将主文件描述符恢复为从属文件打开之前的状态?

c linux epoll pts

6
推荐指数
0
解决办法
230
查看次数

标签 统计

c ×1

epoll ×1

linux ×1

pts ×1