我有一个简单的程序来演示C for Linux中的信号处理。我只是把它复杂化进行实验..
<template name="monitoring">
{{#each houses}}
<div class="card red">
SHOW STUFF ABOUT HOUSE
</div>
{{#each neighbours}}
<div class="card blue">
SHOW STUFF ABOUT NEIGHBOURS OF THE SPECIFIC HOUSE
</div>
{{/each}}
{{/each}}
</template>
我收到了输出:
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
^\^\^\^\^\^\^\
为什么只有第一次调用我的处理程序而不是进一步调用。我希望信号首先进入主线程,然后传递给处理程序。
答案 0 :(得分:3)
信号(SIGQUIT,SIG_IGN);
您的信号处理程序告诉您的程序忽略任何其他信号发生的情况。因此,当您再次发送信号时,它会被忽略,就像您告诉它一样。