读书人

刚接触linux环境编程关于signal()和

发布时间: 2012-03-23 12:06:21 作者: rapoo

刚接触linux环境编程,关于signal()和pause()的问题,请教高手
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>

void my_func(int sign_no)
{
if(sign_no ==SIGINT)
printf("i have get SIGINT\n");
else if(sign_no == SIGQUIT)
printf("i have get SIGQUIT\n");
}
int main()
{
printf("waiting for signal SIGINT or SIGQUIT\n");
signal(SIGINT,my_func);
signal(SIGQUIT,my_func);
pause();
exit(0);
}
在一终端输入./a.out,执行到pause()时,然后在另一终端输入kill -s SIGINT 进程ID后,终端输出i have get SIGINT。我的困惑时:程序是顺序执行,为什么此时又回到signal(SIGINT,my_func)执行?


[解决办法]
signal是注册信号处理函数,不是执行信号处理函数.
[解决办法]

探讨

引用:

悲剧,3L没看题。。。

引用:
为什么此时又回到signal(SIGINT,my_func)执行?


什么意思?

程序执行到pause()处被阻塞,然后信号SIGINT来时,输出i have get SIGINT(执行了my_func函数,该函数由signal()调用),既此时函数从pau……

读书人网 >UNIXLINUX

热点推荐