程序代码:
#include <stdio.h>
#include<signal.h>
#include<unistd.h>
typedef void (*sighandler_t)(int);
void handler(int sig)
{
while(1)
{
printf("sig=%d __%d__",sig,__LINE__);
sleep(1);
}
return ;
}
int main(int argc, const char *argv[])
{
printf("handler:%p\n",handler);
//捕获信号
sighandler_t s=signal(2,handler);
if(SIG_ERR == s)
{
perror("signal");
return -1;
}
printf("s=%p\n",s);
while(1)
{
printf("s=%p __%d__\n",s, __LINE__);
printf("this is main function\n");
sleep(1);
}
return 0;
}
运行结果:
当在一个信号处理函数内部时,再次触发该信号,不会再次执行该信号的处理函数