原帖由 xiaozhu2007 于 2007-12-26 23:17 发表
这是APUE2中程序清单10_6。
APUE2中说当SIGALRM信号中断了其它信号处理程序,则调用longjmp函数会提早终止该信号处理程序。
在本程序中,当程序开始运行后,按下ctrl+c产生SIGINT信号,main捕捉到该信号后调 ...
如lenovo所说,它是被longjmp中断的。
linux中,当一个信号在执行它的hanlder的时候,只会阻塞同类型的信号,例如这里在处理SIGINT,该信号就被阻塞至处理结束。但其它信号还是会打断当前信号的处理的。除非你自己将它屏蔽掉了。
原帖由 xiaozhu2007 于 2007-12-27 22:55 发表
1。其中“但其它信号还是会打断当前信号的处理的。除非你自己将它屏蔽掉了。”是不是应该加上“或者设置了该信号的处理程序”
因为执行下面的程序,一开始按下ctrl+c,程序执行sig_int,当5s后SIGALRM信号被 ...
原帖由 xiaozhu2007 于 2007-12-28 15:41 发表
不对吧,我说的是下面的程序啊!当产生了SIGALRM信号的时候,并没有中断sig_int程序哦!!!
#include
#include
#include
void sig_int(int signo);
void sig_alrm(int signo);
int main(int ar ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |