1

我必须处理 SIGHUP 和 SIGPIPE 信号,以避免通过 Socket TCP 连接的 CLIENT 关闭终端(GUI 的 [X])没有关闭或崩溃服务器。

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

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

在服务器上,我设置了这样的 SIGPIPE 处理程序

signal(SIGPIPE,SIG_IGN); 

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

任何想法?无论如何谢谢你的支持

4

1 回答 1

0

我犯了一个错误,我将所有检查所有写入和读取指令都带有错误。但是,无论如何,这是处理这种情况的正确方法吗?

忽略 SIGPIPE 是可行的。或者,您可以通过将 MSG_NOSIGNAL 标志赋予send().

于 2017-11-07T08:44:07.680 回答