在封闭的伪终端上停止EPOLLHUP

时间:2015-05-10 09:49:22

标签: c linux epoll pts

我正在研究small library for creating a pair of connected pts。我使用epoll fd,其中我为master fd事件的两个伪终端注册了EPOLLIN。当我的示例客户端程序启动时,事件循环处于空闲状态,因此当两个客户端(在我的情况下为microcom)打开每个从属时。但是当任何客户端关闭它的从属端时,epoll_wait会持续报告从属主服务器的EPOLLHUP事件。

为了防止这种情况,我在每个奴隶上保持一个用O_WRONLY打开的文件描述符,它可以工作(不再是EPOLLHUP),但我认为这更像是一个黑客而不是一个真正的解决方案。 .. 在这种情况下,Socat似乎在忙碌的等待和小睡眠。

我试过:

  • 使用边缘触发行为
  • EPOLL_CTL_DEL然后重新添加生成HUP的主人

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

有没有办法清理“HUP状态”,并在EPOLLHUP发生后将主文件描述符放回到奴隶打开之前的状态?

0 个答案:

没有答案