在“接受”中断后恢复

时间:2016-11-03 04:50:39

标签: c sockets signals

正在编写具有服务器功能的程序。 这是一个简短的片段演示接受:

for (;;) {
        if ((c = accept(s, (struct sockaddr *)&sa, &b)) == -1) {
                if (EINTR == errno) {
                        syslog(LOG_INFO, "recovering after system call interruption");
                        continue;
                } else
                        err_exit(strerror(errno));
        }
        /* forking, client handling code */
}

此外,我通过重新读取配置文件来处理 HUP ,以便在accept被阻止等待客户端请求时发生信号。

我使用的方法是否正确,或者有另一种正确的方法来执行accept和处理信号?

信号中断是否会刷新等待服务的客户端队列,这是我对该问题的主要关注。

1 个答案:

答案 0 :(得分:2)

  

信号中断是否会刷新客户端队列

不,它没有。

  

我使用的方法是否正确

是一种常见的方法,是的。

  

还是有另一种接受和处理信号的正确方法?

不负责任,因为您没有显示相关代码,您实际上是如何进行信号处理的。