当要处理超过 300 个 UDP 套接字时,就会发生这种情况。代码通过调用重试 epoll_wait()。但再次返回错误 4。
epoll_wait
手册:
调用之前被信号处理程序中断EINTR
(1) 发生任何请求的事件或
(2) 超时时间已过;
这意味着,可以接收到任何信号,例如包括
SIGUSR1
。如果你确定你的程序在中断后可以继续运行(比如在调试期间),你可以检查epoll_wait()
的返回值。如果是-1
,并且errno
是EPOLLINT
,则重试epoll_wait()
继续执行即可。