Was ist der beste Weg in C unter Linux, ein Programm einzurichten, 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:
%Vor%Ich habe zwei Signale zum Auffangen eingerichtet, indem ich für jedes Signal individuelle Signalaufrufe habe:
%Vor%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?
Ich kann nicht sehen, wie Sie einfach einen einzigen Handler für alle Signale setzen können. Sie können jedoch schließen, indem Sie sigfillset()
verwenden Generiere ein Set, das alle gültigen Signalnummern enthält, und iteriere dann über mögliche Signalnummern mit sigismember()
um festzustellen, ob diese Nummer in der Menge enthalten ist, und wenn ja, einen Handler zu setzen. OK, ich kann keine Methode zur Bestimmung der maximal möglichen Signalnummer sehen, daher müssen Sie möglicherweise einen geeigneten Maximalwert erraten.
Ist dies der richtige Weg, um diese Art der Behandlung einzurichten?
Nicht ganz - es ist nicht sicher, printf()
zu verwenden innerhalb eines Signalhandlers , aber Sie können weiterhin write()
bis stdout
oder stderr
verwenden.