+ -
当前位置:首页 → 问答吧 → 请教如下代码

请教如下代码

时间:2011-09-20

来源:互联网

int initLinux()
{
  signal(SIGPIPE, SIG_IGN);
  signal(SIGQUIT, Killer);
  signal(SIGHUP, Killer);
  signal(SIGINT, Killer);
  signal(SIGTERM, Killer);
  return 1;
}
一直对signal函数不是很理解,请解释一下上面的代码呗,多谢了。

作者: ruifengzhangyi99   发布时间: 2011-09-20

这些是所谓的“注册信号”、“安装信号”的函数(不知是不是这些名词)。

说通俗一些,就是当有一个信号产生时调用对应的处理函数。
对于楼主的程序,就是当产生SIGQUIT、SIGINT这些信号时,调用Killer函数。
SIGINT是你按Ctrl+C产生的,其它的没试过。

作者: subfate   发布时间: 2011-09-20

引用 1 楼 subfate 的回复:

这些是所谓的“注册信号”、“安装信号”的函数(不知是不是这些名词)。

说通俗一些,就是当有一个信号产生时调用对应的处理函数。
对于楼主的程序,就是当产生SIGQUIT、SIGINT这些信号时,调用Killer函数。
SIGINT是你按Ctrl+C产生的,其它的没试过。

正解

作者: lgxwqq111   发布时间: 2011-09-20

第一个signal(SIGPIPE, SIG_IGN);是说忽略掉pipe产生的信号。

作者: zjf30366   发布时间: 2011-09-20

剩下的是说遇到其余四种信号时调用killer函数。

作者: zjf30366   发布时间: 2011-09-20