C信号(sigpipe,sighup)通过Socket

时间:2015-12-16 18:02:10

标签: c sockets signals sigpipe

我要处理SIGHUP和SIGPIPE信号,以避免通过Socket TCP连接的CLIENT关闭终端(GUI的[X])不得关闭或崩溃SERVER。 / p>

我在客户端上设置了像这样的sigup处理程序

void sighup()
{
  signal(SIGHUP, SIG_IGN);
  system("echo SIGHUP received>>log.txt");
  close(socket);
  exit(0);
}

在服务器上,我设置了一个像这样的

的SIGPIPE处理程序
signal(SIGPIPE,SIG_IGN); 

但是,如果客户端关闭终端的窗口,则服务器会循环。

有什么想法吗? 无论如何,谢谢您的支持

1 个答案:

答案 0 :(得分:0)

  

我犯了一个错误,我会把所有检查全部写入和读取   perrorctions with perror。但是,无论如何,这是正确的处理方式   情况如何?

忽略SIGPIPE是可行的。或者,您可以通过向send()提供MSG_NOSIGNAL标志来阻止生成SIGPIPE。