Ich habe ein einfaches Programm, um die Signalverarbeitung in C für Linux zu demonstrieren. Ich kann es nur kompliziert für das Experimentieren ..Linux: Ignorieren eines Signals in einem Signal-Handler, ignorieren alle solche aufeinanderfolgenden Signale
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;
}
ich die Ausgabe bin immer:
^\Recieved signo : 3
^\^\^\^\^\^\^\
während ich dies erwartet hatte: Es wurde
^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3
Warum nur erste Mal meine Handler aufgerufen und nicht weiter. Ich erwartete, dass die Signale zuerst zum Hauptthread kommen und dann an die Handler übergeben werden.
Also was ist die Idee hinter dieser Linie 'Signal (SIGQUIT, SIG_IGN)' 'obwohl? ;-) – alk