我有一个简单的程序来演示C for Linux中的信号处理。我只是尝试复杂吧..Linux:忽略信号处理程序中的信号,忽略所有这些连续的信号
void sigquit(int signo)
{
printf("Recieved signo : %d\n",signo);
signal(SIGQUIT,SIG_IGN);
}
int main()
{
/* register the signal handler */
if(signal(SIGQUIT,sigquit) == SIG_ERR)
{
perror("Error handling SIGQUIT signal");
exit(1);
}
for(;;);
return 0;
}
我得到的输出:
^\Recieved signo : 3
^\^\^\^\^\^\^\
,而我期待这样的:
^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3
为什么只有第一次我的处理程序被调用和没有进一步。我预计这些信号将首先进入主线程,然后传递给处理程序。
那么这条线'signal(SIGQUIT,SIG_IGN)背后有什么想法;'尽管? ;-) – alk