【发布时间】:2016-05-29 12:59:58
【问题描述】:
我有一个简单的程序来演示 C for 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);这条线背后的想法是什么? ;-)
标签: c linux signal-handling