Was ist der richtige Weg, um eine einzelne Signalbehandlungsfunktion für mehrere Signale zu haben?
Was ist der beste Weg in C unter Linux, um ein Programm zu erstellen, das mehrere POSIX-Signale mit derselben Funktion verarbeiten kann?
Zum Beispiel habe ich in meinem Code eine Handler-Funktion, die ich generisch aufrufen möchte, wenn ein Signal abgefangen wird, um einige Aktionen auszuführen:
/* Exit handler function called by sigaction */
void exitHandler( int sig, siginfo_t *siginfo, void *ignore )
{
printf("*** Got %d signal from %d\n", siginfo->si_signo, siginfo->si_pid);
loopCounter=0;
return;
}
Ich habe zwei Signale eingerichtet, die abgefangen werden sollen, indem für jedes Signal einzelne Sigaktionsaufrufe ausgeführt werden:
/* Set exit handler function for SIGUSR1 , SIGINT (ctrl+c) */
struct sigaction act;
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = exitHandler;
sigaction( SIGUSR1, &act, 0 );
sigaction( SIGINT, &act, 0 );
Ist dies der richtige Weg, um diese Art der Behandlung einzurichten? Gibt es eine andere Möglichkeit, bei der ich nicht alle möglichen Signalnummern aufzählen muss?