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()返回后处理事件后重置事件缓冲区是否合适?
答案 0 :(得分:0)
没有
更好的方法是修复代码中的错误。来自result
的{{1}}不是布尔值。它是一个integere,指定在提供的缓冲区列表中填充了多少缓冲区。
如果确保只读取那些,则根本不需要初始化缓冲区。