我正在一个小型图书馆上创建一对相互关联的pts。我使用epoll fd,在其中master fd为EPOLLIN事件的两个伪终端注册。当我的示例客户端程序启动时,事件循环处于空闲状态,因此两个客户端(在我的情况下为microcom)打开每个从属设备。但是,当任何一个客户端关闭它的从属端时,它将epoll_wait连续报告EPOLLHUP该从属主机的事件。
为了防止这种情况,我O_WRONLY在每个从属服务器上都打开了一个文件描述符,它可以工作(不再可用EPOLLHUP),但是我认为这不是真正的解决方案,而是更多的黑客手段。在这个情况下。
我试图:
EPOLL_CTL_DEL 然后重新添加制作HUP的主文件这些尝试均未显示任何结果。
在发生EPOLLHUP之后,是否可以清理“ HUP状态”并将主文件描述符恢复为从属文件打开之前的状态?