当前位置: 技术问答>linux和unix
APUE中“信号”一节的问题
来源: 互联网 发布时间:2016-11-24
本文导语: 第254页,说,如果SIGALRM(信号一)中断了某个其它信号处理程序(信号二),则调用longjmp(longjmp在SIGALRM的处理函数中)会提早终止该信号处理程序(信号二)。 longjmp和setjmp都在信号一的处理函数中,不是在信号...
第254页,说,如果SIGALRM(信号一)中断了某个其它信号处理程序(信号二),则调用longjmp(longjmp在SIGALRM的处理函数中)会提早终止该信号处理程序(信号二)。
longjmp和setjmp都在信号一的处理函数中,不是在信号一处理函数间跳转就可以了么?为什么会影响到信号二的处理程序。
求解释
longjmp和setjmp都在信号一的处理函数中,不是在信号一处理函数间跳转就可以了么?为什么会影响到信号二的处理程序。
求解释
|
setjump保存进程上下文,longjump调制该上下文继续执行,书上那么说是setjump的时候信号二没有发生,接着信号二发生,调用信号二处理函数,但是如果这时候发生SIGALRM,并在它的处理函数中longjump之后,显然不会再有对信号二的处理了,因为setjump的时候并不关信号二什么事。