gpt4 book ai didi

c - 我需要重新初始化 epoll_wait 的事件数组吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:26 25 4
gpt4 key购买 nike

1) 我有 epoll_wait(..., events, ...) 循环,我需要在每次迭代前重新初始化 events 数组吗?

2) 根据epoll() 手册例子没有必要,是不是搞错了?

3) 我还没有处理的 fds 是否会在下一次迭代中被重写到数组中? (我正在使用级别触发的 epoll)我不会错过准备好的 fds?

我已经尝试阅读内核代码以检查它是否在每次迭代时覆盖数组或仅添加数组,但没有成功(如果你能告诉我它会很棒)。

struct epoll_event ev, events[MAX_EVENTS];
...
for (;;) {
nfds = epoll_wait(epollfd, events, MAX_EVENTS, -1);
...
}

最佳答案

epoll_wait 返回它已写入的 events 元素的数量,您不应该关心数组的其余部分。所以我会说 - 不,只要您始终使用第一个 nfds 元素,您就不需要重新初始化这个数组,甚至不需要初始化它。

进一步详细说明:在每次调用 epoll_wait 之后,您肯定知道它填充了 events 数组的第一个 nfds 元素,所以您必须遍历这些元素以检查在哪些描述符处发生了什么事件。然而,events 数组中的其余元素基本上是来自先前的 epoll_wait 调用或来自该数组分配的任何内存区域的垃圾,因此所有具有索引的元素>= nfds 不包含任何有用的数据。

关于c - 我需要重新初始化 epoll_wait 的事件数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com