在关闭套接字时只触发了一个EPOLLONESHOT事件后,是否需要手动EPOLL_CTL_DEL事件?

u59ebvdq  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(85)
struct epoll_event ev, events[20];
ev.events = EPOLLOUT | EPOLLONESHOT;
ev.data.sock = some_socket;
epoll_ctl(epfd, EPOLL_CTL_ADD, some_socket, &ev);
// then the EPOLLOUT event has triggered by epoll_wait
epoll_ctl(epfd, EPOLL_CTL_DEL, some_socket, NULL); // should it be called? will it cause error?

字符串
在EPOLLOUT事件被触发后,MAN页面表示该事件现在已被禁用并且将不会被触发。我不知道它是否与EPOLL_CTL_DEL完全相同。如果EPOLLOUT关闭套接字,是否需要手动调用EPOLL_CTL_DEL| EPOLLONESHOT是唯一被触发的事件吗?

vq8itlhq

vq8itlhq1#

“当关闭套接字”意味着你不需要epoll_ctlEPOLL_CTL_DEL,除非有其他的罚款时刻。你复制了fd吗?不知道?那你就不需要知道。是?可能取决于程序逻辑:无论您是否需要现在关闭该套接字,还是它仍被监视。详情请阅读这里:Epoll: does it silently remove fds?

相关问题