
signal()函数,为什么在任何地方都可以起作用?
intmain(void){if(signal(SIGUSER1,sig_usr)==SIG_ERR)err_sys("can'tcatchSIGUSER1");if(s...
int main(void)
{
if(signal(SIGUSER1,sig_usr) == SIG_ERR)
err_sys("can't catch SIGUSER1");
if(signal(SIGUSER2,sig_usr) == SIG_ERR)
err_sys("can't catch SIGUSER2");
for(;;)
pause();
} 这个signal函数并不在这个for循环里~ 但是当程序执行在for循环的时候发个信号却可以接收 是为什么呢? 展开
{
if(signal(SIGUSER1,sig_usr) == SIG_ERR)
err_sys("can't catch SIGUSER1");
if(signal(SIGUSER2,sig_usr) == SIG_ERR)
err_sys("can't catch SIGUSER2");
for(;;)
pause();
} 这个signal函数并不在这个for循环里~ 但是当程序执行在for循环的时候发个信号却可以接收 是为什么呢? 展开
2个回答
展开全部
unix的signal机制就是这样的,当一个进程收到信号时,不管它处于什么状态,都是会被中断,转而去处理信号。如果接收的信号没有被 忽略或设置处理函数,进程将退出。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询