我试图理解 epoll_wait 中的“事件”指针。当 epoll_wait 返回时,这个指针是否指向所有事件结构都存在的某个内存(不是由用户分配的)?还是我们必须为这个指针分配内存,然后传递指针,以便事件在那个内存位置被填满?
如果必须分配内存,那么应该分配多少?假设我想在 10,000 个套接字上执行 epoll_wait。所有这些都将检查要读取的数据 (EPOLLIIN)。那么,我应该为 *events 分配相当于 10,000 个事件结构的内存吗?
谢谢,
虚拟网络
您是否看过例如epoll(7)手册页中的示例?您需要提供实际的事件数组,或者作为示例中的正确数组,或者通过分配堆(并稍后释放它)。
MaxEvents 是您的数组在元素中的大小。如果分配的内存为sizeof(epoll_event) * 10
,maxEvents
则为 10。 MaxEvents 与您正在侦听的套接字数量无关。