![](/img/trans.png)
[英]Can epoll_wait() > 1 with only 1 socket and 1 event — EPOLLIN?
[英]Send EPOLLIN event to epoll_wait
是否可以将EPOLLIN
事件手动发送到epoll
以获取套接字文件描述符,而无需将数据写入套接字?
也许可以使用fcntl
或ioctl
来停止epoll_wait
函数,不是吗?
更新 :
我知道在大多数情况下这样做是没有道理的,但是我认为在我的情况下确实有道理。
我正在为程序编写网络插件,无法修改。 插件API给了我一个套接字FD,并告诉我编写一个函数从套接字读取n
个字节。 为此,我使用了polarssl
库中的ssl_read
函数,该函数将所有数据读入其自己的内部缓冲区中,即n
个字节以上。
程序中会发生什么? 套接字接收数据时,程序将等待( epoll_wait
),然后告诉插件读取大约4kB的数据。 然后,它等待套接字接收下一个数据。 当套接字接收到12kB数据时,程序将调用插件中的read
函数,该插件将使用ssl_read
函数读取所有数据。 结果,没有更多的数据可用于套接字,但是polarssl
库具有其自己的缓冲区,该缓冲区具有大约8kB的可用数据。
所以现在我需要告诉程序调用插件的read
函数,该函数不会直接从套接字读取数据,而是会从polarssl
内部缓冲区读取数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.