调用 epoll_wait() 之后,Linux 系统返回中断的系统调用(错误号 4)

问题描述 投票:0回答:1

当要处理超过 300 个 UDP 套接字时,就会发生这种情况。代码通过调用重试 epoll_wait()。但再次返回错误 4。

c++ linux sockets network-programming call
1个回答
0
投票

查看

epoll_wait
手册:

EINTR
调用之前被信号处理程序中断
(1) 发生任何请求的事件或
(2) 超时时间已过;

这意味着,可以接收到任何信号,例如包括

SIGUSR1
。如果你确定你的程序在中断后可以继续运行(比如在调试期间),你可以检查
epoll_wait()
的返回值。如果是
-1
,并且
errno
EPOLLINT
,则重试
epoll_wait()
继续执行即可。

© www.soinside.com 2019 - 2024. All rights reserved.