kin*_*er1 3 c linux epoll system-calls interrupted-exception
由于EINTR,我的epoll_wait失败了.我的gdb跟踪显示了这个:
enter code here
221 in ../nptl/sysdeps/pthread/createthread.c
(gdb)
224 in ../nptl/sysdeps/pthread/createthread.c
(gdb)
[New Thread 0x40988490 (LWP 3589)]
227 in ../nptl/sysdeps/pthread/createthread.c
(gdb)
epoll_wait error in start timer: Measurement will befor entire duration of execution
epoll_wait: Interrupted system call
[Thread 0x40988490 (LWP 3589) exited]
Run Code Online (Sandbox Code Playgroud)
这个字符串"启动计时器中的epoll_wait错误:测量将在整个执行期间"由我在stderr中打印.
我无法弄清楚,如何补救这个EINTR,以便epoll_wait可以工作.知道GDB跟踪如何生成这个EINTR吗?
Cod*_*odo 15
某些信号处理程序将中断epoll_wait(),select()并在任何Unix或Linux上进行类似的系统调用.这是设计使您可以中断这些系统调用.
你不能直接补救它.典型的解决方案是显式检查EINTR的errno并epoll_wait()再次执行:
int nr;
do {
nr = epoll_wait(epfd, events, maxevents, timeout);
} while (nr < 0 && errno == EINTR);
Run Code Online (Sandbox Code Playgroud)
另请参阅:gdb错误:无法执行epoll_wait:(4)系统调用中断
| 归档时间: |
|
| 查看次数: |
7556 次 |
| 最近记录: |