我有一個簡單的程序來演示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