日期:2014-05-16  浏览次数:20806 次

关于signal信号
在程序中如果刚开始将一个信号这样处理:
signal(SIGPIPE, handler1);

那么当接收到这个信号后就会在handler1中执行,
如果在下面的程序中重新安装这个信号如下:
signal(SIGPIPE, handler2);
这样以后接收到的信号会不会通过handler2处理?
也就是说同一个信号可不可以重复安装,如果可以的话
是不是起作用的是最近安装的?


------解决方案--------------------
当然是取代啊。
------解决方案--------------------
signal函数调用成功就会返回之前的处理句柄,
重复安装的话就应该是最近的那个处理了。
------解决方案--------------------
signal函数的返回值为先前的信号处理函数指针

------解决方案--------------------
嗯,可以重新安装,生效的是最近的。

这个可以算是函数使用问题,可以看一下man帮助。
The signal() system call installs a new signal handler for the signal with number signum.