正在编写具有服务器功能的程序。 这是一个简短的片段演示接受:
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
和处理信号?
信号中断是否会刷新等待服务的客户端队列,这是我对该问题的主要关注。
答案 0 :(得分:2)
信号中断是否会刷新客户端队列
不,它没有。
我使用的方法是否正确
是一种常见的方法,是的。
还是有另一种接受和处理信号的正确方法?
不负责任,因为您没有显示相关代码,您实际上是如何进行信号处理的。