我在网上发现有关嵌套FD行为的非常有限的信息。
假设EPOLL FD1在EPOLL FD2和FD3之间共享。那么,如果epoll FD1收到事件会怎样?
以及嵌套epoll FD的用例是什么?
对于级别触发的情况,非常简单:
对于边沿触发的情况,我们希望对1的回答保持不变,因为无论嵌套如何,如果将相同的FD与EPOLLET
一起添加到两个epoll实例中,它们都将报告每个事件一次。
我不知道第二个问题应该的答案是什么,但这无关紧要。在边缘触发模式下添加epoll FD时存在一个错误,它们总是始终像级别触发一样,FD2和FD3会继续显示FD1,只要它有未决事件即可读取。您可以看到有关尝试修复它的线程,我认为这还没有解决到大陆:fs/epoll: fix the edge-triggered mode for nested epoll哪个链接到此GitHub repo,它会测试很多不同的场景,您可能会发现这很有趣。