用于多线程的C信号(可选?)



我正在通过TCP套接字一个接一个地发送浮点数数组。我的服务器(接收器-同时处理多个请求)程序应该读取数据,直到接收到值0。如果客户端(发送者)没有发送任何10秒后,他连接(或后最后发送值),我希望服务器关闭该连接。我发现了这种信号方法,但我认为在线程中使用它不是最佳的,而更有可能用于fork(),因为它迫使我使用全局变量。我必须将"socket"参数发送给函数,这样我就可以关闭它,而且我敢肯定这是不可能的。

void time_out(int semnal) {
  printf("Time out.n");
  close(socket);
  exit(1);
}

,每次客户端连接或发送东西时,我调用它:

signal(SIGALRM, time_out);
alarm(10);

还有什么其他的选择,我必须计数10秒,并能够重新启动这个计时器?

您可以使用带有空FD集和超时的select。这很常见,也很便携

相关内容

  • 没有找到相关文章

最新更新