Provided by: manpages-de-dev_4.27.0-1_all bug

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: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                     sigsuspend(2)