Linux FD向用户公开等待

Lar*_* M. 5 linux events select epoll file-descriptor

想象一下,有一个库可以启动服务器套接字并管理所有客户端的epoll fd.由于所有内容都应该是非阻塞的,因此控制权将传递给用户,该用户可能希望对不同的fds进行选择,包括通知库的那个.

目前,用户指定回调.然后,用户可以调用评估epoll的服务例程并调用那些回调,以避免不断调用服务例程,而是执行用户可能想要在epoll fd上等待的其他事情.

在不暴露epoll fd的情况下向用户公开fd的正确方法是什么?对我来说,更好的解决方案是创建第二个只读文件描述符,如果epoll变得可读,它将变得可读.这可能吗?

我知道使用服务线程的可能解决方案,但我更愿意,如果我可以做到这一点,而不会因同步而增加复杂性.

另一个可能的解决方案是eventfd和一个轮询epoll fd然后触发eventfd的线程.但这似乎超过了顶部.