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