将EPOLLIN事件发送到epoll_wait

时间:2014-08-06 13:40:41

标签: c system-calls epoll

是否可以手动将EPOLLIN事件发送到epoll以获取套接字文件描述符而无需将数据写入套接字?

也许可以使用fcntlioctl来停止epoll_wait功能,不是吗?

更新

据我所知,在大多数情况下,这样做是没有意义的,但我认为这在我的案例中确实有意义。

我正在为程序编写网络插件,我无法修改。插件API给了我一个套接字FD,并告诉我编写一个函数来从套接字读取n个字节。我使用ssl_read库中的polarssl函数,将所有数据读入自己的内部缓冲区,超过n个字节。

该计划会发生什么?当套接字接收数据时程序等待(epoll_wait),然后告诉插件读取大约4kB的数据。然后它等待套接字接收下一个数据。当套接字接收12kB数据时,程序调用插件中的read函数,该函数使用ssl_read函数读取所有数据。因此,没有更多可用于套接字的数据,但polarssl库有自己的缓冲区,它有大约8kB的可用数据。

所以现在我需要告诉程序调用插件的read函数,它不会直接从套接字读取数据,而是从内部polarssl缓冲区读取数据

1 个答案:

答案 0 :(得分:0)