C 区分epoll中的文件描述符类型

C 区分epoll中的文件描述符类型,c,epoll,C,Epoll,我有一个网络客户端库,我正在组装它,它可以读取/写入一些网络套接字 有一个线程执行网络I/O并响应来自公开客户端API的请求。这些客户端API请求将从FIFO队列中弹出 当我的主循环在epoll_wait上被阻塞时,为了让线程得到请求 我想我应该使用eventfd,我可以用epoll\u ctl添加它 所以问题是,如果epoll只是用EPOLLIN通知,我如何区分推送到FIFO队列上的事件和网络I/O 编辑: 我应该补充一点,我不想将事件fd存储在数据成员中,而是使用ptr成员。我想我需要将fd

我有一个网络客户端库,我正在组装它,它可以读取/写入一些网络套接字

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

当我的主循环在epoll_wait上被阻塞时,为了让线程得到请求 我想我应该使用eventfd,我可以用epoll\u ctl添加它

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

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


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

是的,您必须比较文件描述符。中的示例就是这样做的。

谢谢,不知道我怎么会错过这个。现在看来很明显