适用于慢系统调用的基本规则是:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应处理函数返回时,该系统调用可能返回一个EINTR错误。所以,我们必须对慢系统调用返回的EINTR有所准备。
为了处理被中断的accept,可以改成如下形式:
- for (;;)
-
{
-
if((connfd=accept(listenfd,NULL, NULL)) 0)
-
{
-
if (errno == EINTR)
-
continue;
-
else
-
printf("accept error");
-
}
- }
出自unix网络编程(第三版)第五章 P115页