Provided by: manpages-de-dev_4.26.0-1_all 

BEZEICHNUNG
sigsuspend, rt_sigsuspend - Auf ein Signal warten
BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT
#include <signal.h>
int sigsuspend(const sigset_t *Maske);
Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):
sigsuspend():
_POSIX_C_SOURCE
BESCHREIBUNG
sigsuspend() ersetzt temporär die Signalmaske des aufrufenden Threads mit der in Maske übergebenen Maske
und suspendiert den Thread anschließend, bis ein Signal ausgeliefert wird, dessen Aktion der Aufruf
eines Signal-Handhabers oder das Beenden eines Prozesses ist.
Falls das Signal den Prozess beendet, dann kehrt sigsuspend() nicht zurück. Falls das Signal abgefangen
wird, dann kehrt sigsuspend() nach Rückkehr des Signal-Handhabers zurück und die Signalmaske wird auf den
Zustand von vor dem Aufruf von sigsuspend() zurückgesetzt.
Es ist nicht möglich, SIGKILL oder SIGSTOP zu blockieren. Die Angabe dieser Signale in Maske hat keine
Auswirkung auf die Signalmaske des Threads.
RÜCKGABEWERT
sigsuspend() liefert immer -1 zurück, wobei errno gesetzt wird, um den Fehler anzuzeigen (normalerweise
EINTR).
FEHLER
EFAULT Maske zeigt auf Speicher, der kein gültiger Anteil des Prozessadressraums ist.
EINTR Der Aufruf wurde durch ein Signal unterbrochen; signal(7).
STANDARDS
POSIX.1-2008.
GESCHICHTE
POSIX.1-2001.
Unterschiede C-Bibliothek/Kernel
Der ursprüngliche Systemaufruf hieß sigsuspend(). Als allerdings die Echtzeitsignale in Linux 2.2
hinzugefügt wurden, war der Typ sigset_t mit fester 32-bit-Größe nicht mehr für den Zweck geeignet.
Konsequenterweise wurde ein neuer Systemaufruf rt_sigsuspend() hinzugefügt, um einen vergrößerten Typ
sigset_t zu unterstützen. Der neue Systemaufruf akzeptiert ein zweites Argument, size_t sigsetsize, das
die Größe in Byte des in Maske gesetzten Signals festlegt. Dieses Argument muss derzeit den Wert
sizeof(sigset_t) (oder den Fehler, den EINVAL ergibt) haben. Die Glibc-Wrapper-Funktion sigsuspend()
versteckt diese Details und ruft transparent rt_sigsuspend() auf, wenn der Kernel diesen bereitstellt.
ANMERKUNGEN
Normalerweise wird sigsuspend() im Zusammenspiel mit sigprocmask(2) verwandt, um die Auslieferung eines
Signals während der Ausführung von Code in kritischen Abschnitten zu vermeiden. Der Aufrufende blockiert
zuerst die Signale mit sigprocmask(2). Wenn der kritische Code abgeschlossen wurde, wartet der Aufrufende
durch Aufruf von sigsuspend() mit der Signalmaske, die von sigprocmask(2) (in dem Argument oldset)
zurückgeliefert wurde, auf die Signale.
Siehe sigsetops(3) für Details über das Bearbeiten von Signalgruppen.
SIEHE AUCH
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3),
signal(7)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
Mailingliste der Übersetzer.
Linux man-pages 6.9.1 2. Mai 2024 sigsuspend(2)