我是一个对使用C语言进行信号处理的新手。我正在分析下面从特定资源中提取的信号处理代码。
以下是该代码。
#include <stdio.h>
#include <signal.h>
void intproc();
void quitproc();
main()
{
int i;
signal(SIGINT,intproc);
signal(SIGQUIT,quitproc);
printf("Ctrl+c is disabled. Use ctrl+\\ to quit\n");
for (i=0;;i++) {
printf("In an infinite loop...\n");
sleep(200);
}
}
void intproc()
{
signal(SIGINT,intproc);
printf("You have pressed ctrl+c.\n");
}
void quitproc()
{ signal(SIGQUIT,intproc);
printf("You have pressed ctrl+\\. Now the program quits.\n");
exit(0);
}
我想知道为什么我们在intproc()函数内部再次调用信号处理程序"(SIGINT,intproc)"?
我尝试在该函数中不使用该信号处理程序运行此代码,它也可以正常工作。