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是唯一被触发的事件吗?
1条答案
按热度按时间vq8itlhq1#
“当关闭套接字”意味着你不需要
epoll_ctl
与EPOLL_CTL_DEL
,除非有其他的罚款时刻。你复制了fd吗?不知道?那你就不需要知道。是?可能取决于程序逻辑:无论您是否需要现在关闭该套接字,还是它仍被监视。详情请阅读这里:Epoll: does it silently remove fds?