definiert)
if (sigismember (&blocked_signals, i)) {
// Überprüfen Sie, ob das Signal blockiert ist. Sigismember gibt 1 zurück, wenn es ein Mitglied des Satzes ist
printf ("Signal %d ( %s) \ n", i, strallal (i)); // Strsignal konvertiert die Signalnummer in String
// Wenn Strsignal nicht funktioniert (einige Systeme unterstützen es möglicherweise nicht), können Sie eine Nachschlagtabelle verwenden
// oder manuell die Signalnummer ausdrucken.
}
}
Rückkehr 0;
}
`` `
zum Kompilieren und Ausführen dieses Codes:
1. Speichern: Speichern Sie den Code als `.c` -Datei (z. B.` blocked_signals.c`).
2. kompilieren: Verwenden Sie einen C -Compiler (wie GCC), um den Code zu kompilieren:
`` `bash
GCC blocked_signals.c -o blocked_signals
`` `
3. Run: Führen Sie das kompilierte Programm aus:
`` `bash
./blocked_signals
`` `
In der Ausgabe werden die Signalnummern und deren Namen (falls über `Strsignal`) aufgeführt, die derzeit für den Prozess blockiert sind. Beachten Sie, dass der Satz blockierter Signale vom aktuellen Status des Prozesses und der Einrichtung der Signalbehandlung abhängt.
Wichtige Überlegungen:
* Fehlerbehandlung: Der Code enthält eine grundlegende Fehlerbehandlung für "SigProcmask". Robuste Anwendungen sollten umfassendere Fehlerprüfungen hinzufügen.
* Signalnamen: Die "Strsignal" -Funktion ist in allen Systemen nicht garantiert, dass sie für alle Signale Namen bereitstellen. Möglicherweise müssen Sie Fälle verarbeiten, in denen NULL zurückgegeben wird oder eine benutzerdefinierte Nachschlagtabelle verwendet wird, um Signalnummern auf Namen zuzuordnen.
* Signalnummern: Der Bereich der Signalzahlen (`nSIG`) ist systemabhängig. Es ist normalerweise in `` definiert.
* Privilegien: Das Erhalten von Informationen über Signale erfordern möglicherweise spezifische Berechtigungen (z. B. als Stammführung). Wenn Sie auf Erlaubnisfehler stoßen, kann dies die Ursache sein.
Denken Sie daran, die Dokumentation Ihres Systems zu konsultieren, um Einzelheiten zum Signalhandling und die spezifischen verfügbaren Signale zu erhalten. Das Verhalten und die Verfügbarkeit von Funktionen, die sich auf Signale beziehen, können sich in den UNIX-ähnlichen Betriebssystemen (Linux, MacOS, BSD usw.) geringfügig unterscheiden.