epoll_wait()事件缓冲区重置

时间:2017-10-05 17:35:20

标签: linux epoll

epoll_wait()的第二个参数是size = sizeof(struct epoll_event)的缓冲区*调用者期望(或监视)的总数事件(文件描述符)。在第一次传递给epoll_wait()之前,此缓冲区始终初始化为零。

对于以下代码段

memset(&events[0], 0, maxEvents * sizeof (struct epoll_event))
do
{
    result = epoll_wait(epoll_fd, &events[0], maxEvents, timeout)
    if (result)
    {
        //process events
    }
} while (1)

每次epoll_wait()返回后处理事件后重置事件缓冲区是否合适?

1 个答案:

答案 0 :(得分:0)

没有

更好的方法是修复代码中的错误。来自result的{​​{1}}不是布尔值。它是一个integere,指定在提供的缓冲区列表中填充了多少缓冲区。

如果确保只读取那些,则根本不需要初始化缓冲区。