Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何检测以前在epoll中注册的所有事件何时被取消注册?_Linux_Events_Epoll - Fatal编程技术网

Linux 如何检测以前在epoll中注册的所有事件何时被取消注册?

Linux 如何检测以前在epoll中注册的所有事件何时被取消注册?,linux,events,epoll,Linux,Events,Epoll,假设我在某个函数中使用epoll_ctl注册有限数量的事件。现在,通过多次调用同一个函数,我可以使用以下方法一次注销这些事件中的每一个: epoll_ctl(epfd, EPOLL_CTL_DEL, fd, event); 如何判断何时所有已注册的实例都已取消注册? 我是否需要为此维护单独的列表 编辑: 我想我需要为我的问题添加更多的上下文。假设我能够检测到没有注册任何事件,那么我需要在上面提到的同一个函数中执行某些其他基本任务,而不是epoll_wait() 是的,您需要说明您的文件描述符

假设我在某个函数中使用epoll_ctl注册有限数量的事件。现在,通过多次调用同一个函数,我可以使用以下方法一次注销这些事件中的每一个:

epoll_ctl(epfd, EPOLL_CTL_DEL, fd, event);
如何判断何时所有已注册的实例都已取消注册? 我是否需要为此维护单独的列表

编辑:


我想我需要为我的问题添加更多的上下文。假设我能够检测到没有注册任何事件,那么我需要在上面提到的同一个函数中执行某些其他基本任务,而不是epoll_wait()

是的,您需要说明您的文件描述符


如果您想取消注册所有事件,您可以关闭epoll fd,让内核释放整个数据结构(我没有尝试过,但我敢打赌这个解决方案也会更快)。

谢谢您的回答。我在我的问题中添加了更多的上下文,以使我的问题更清楚。关闭epoll fd,虽然可以确保所有事件都已注销,但不幸的是,这不符合我的目的。:)你能提供更多的背景吗?检测到没有注册事件意味着什么?如果在某个时刻没有,而您在epoll_wait之后做了一些事情,那么在此期间可能会生成新的事件,而您知道这一点的唯一方法是再次调用epoll_wait…@LtWorf:我正在尝试在linux中模拟kqueue功能。我所说的“另一件”事情是处理常规文件的fds,这是epoll无法处理的。当然,在打电话给epoll_之前,我正在做其他的事情。另外,当我调用epoll_wait时,如果没有注册任何事件,但计时器设置为-1,会发生什么情况?@LtWorf:但我仍然想知道是否可以检测到是否所有事件都已注销。使用这些信息可能只是我的程序的一个小优化,但它可以满足我的好奇心。