“epoll errno (EINTR)4” —— epoll遭遇EINTR(Interrupted system call)

Posted wangshaowei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“epoll errno (EINTR)4” —— epoll遭遇EINTR(Interrupted system call)相关的知识,希望对你有一定的参考价值。

慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就没有返回的保证。


EINTR错误的产生:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应信号处理函数返回时,该系统调用可能返回一个EINTR错误。例如:在socket服务器端,设置了信号捕获机制,有子进程,当在父进程阻塞于慢系统调用时由父进程捕获到了一个有效信号时,内核会致使accept返回一个EINTR错误(被中断的系统调用)。

在epoll_wait时,因为设置了alarm定时触发警告,导致每次返回-1,errno为EINTR,对于这种错误返回

忽略这种错误,让epoll报错误号为4时,再次做一次epoll_wait

以上是关于“epoll errno (EINTR)4” —— epoll遭遇EINTR(Interrupted system call)的主要内容,如果未能解决你的问题,请参考以下文章