当前位置: 技术问答>linux和unix
关于signal信号
来源: 互联网 发布时间:2017-01-27
本文导语: 在程序中如果刚开始将一个信号这样处理: signal(SIGPIPE, handler1); 那么当接收到这个信号后就会在handler1中执行, 如果在下面的程序中重新安装这个信号如下: signal(SIGPIPE, handler2); 这样以后接收到的信号会不会通过h...
在程序中如果刚开始将一个信号这样处理:
signal(SIGPIPE, handler1);
那么当接收到这个信号后就会在handler1中执行,
如果在下面的程序中重新安装这个信号如下:
signal(SIGPIPE, handler2);
这样以后接收到的信号会不会通过handler2处理?
也就是说同一个信号可不可以重复安装,如果可以的话
是不是起作用的是最近安装的?
signal(SIGPIPE, handler1);
那么当接收到这个信号后就会在handler1中执行,
如果在下面的程序中重新安装这个信号如下:
signal(SIGPIPE, handler2);
这样以后接收到的信号会不会通过handler2处理?
也就是说同一个信号可不可以重复安装,如果可以的话
是不是起作用的是最近安装的?
|
嗯,可以重新安装,生效的是最近的。
这个可以算是函数使用问题,可以看一下man帮助。
The signal() system call installs a new signal handler for the signal with number signum.
这个可以算是函数使用问题,可以看一下man帮助。
The signal() system call installs a new signal handler for the signal with number signum.
|
signal函数调用成功就会返回之前的处理句柄,
重复安装的话就应该是最近的那个处理了。
重复安装的话就应该是最近的那个处理了。
|
signal函数的返回值为先前的信号处理函数指针
|
当然是取代啊。