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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage