Was ist der beste Weg in C unter Linux für die Einrichtung eines Programms, das mehrere POSIX-Signale mit derselben Funktion verarbeiten kann?Was ist der richtige Weg, um eine einzelne Signal Handler-Funktion für mehrere Signale zu haben?
Zum Beispiel in meinem Code habe ich eine Handler-Funktion, die ich allgemein Aufruf will, wann immer ein Signal aufgefangen wird einige Aktionen ausfü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 aufgebaut, indem einzelne sigaction zu fangen ruft für jedes Signal auf:
/* 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 Handhabung einzurichten? Gibt es einen anderen Weg, wo ich nicht alle möglichen Signalnummern aufzählen muss?
Danke, das ist eine gute Idee. Ich schätze, ich kann weiterhin die Signale aufzählen, die ich gerne fangen würde, da ich neu in C bin. Ich war neugierig, ob ich etwas verpasst habe. – ammianus