【发布时间】:2023-03-24 10:14:02
【问题描述】:
我是使用 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() 函数中再次调用 Signal handler "(SIGINT,intproc)" ?
我尝试在该函数中不使用该信号处理程序的情况下运行此代码,并且它也可以工作。
【问题讨论】:
-
信号处理不在 C 标准中,而是在 Posix 标准中。
标签: c linux signals signal-processing