在epoll中区分文件描述符类型

时间:2012-06-05 04:59:10

标签: c epoll

我有一个网络客户端库,我正在将它读取/写入某些网络套接字。

有一个线程执行网络I / O并响应来自公开的客户端API的请求。这些客户端API请求将从FIFO队列中弹出。

为了让线程得到请求,当我的主循环在epoll_wait上被阻止时 我想我应该使用eventfd,我可以用epoll_ctl添加。

所以问题是,如果epoll只是通过EPOLLIN通知,我如何区分推入FIFO队列的事件和网络I / O?

编辑: 我应该补充一点,我不想将事件fd存储在数据成员中,而是使用ptr成员。我想我需要将fd存储在该结构中的某个位置。

我可以简单地检查触发事件是否是我的事件文件描述符,因此也从我的fifo中读取,如果它不相等那么它必须是网络事件?这样安全吗?或者是否有最佳实践方法。

1 个答案:

答案 0 :(得分:0)

是的,您必须比较文件描述符。 manual page中的示例执行此操作。