table of contents
- bookworm-backports 4.25.0-1~bpo12+1
- testing 4.25.0-1
- unstable 4.25.0-1
sigsuspend(2) | System Calls Manual | sigsuspend(2) |
BEZEICHNUNG¶
sigsuspend, rt_sigsuspend - Auf ein Signal warten
BIBLIOTHEK¶
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT¶
#include <signal.h>
int sigsuspend(const sigset_t *Maske);
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¶
STANDARDS¶
POSIX.1-2001, POSIX.1-2008.
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.
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.
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.
30. Oktober 2022 | Linux man-pages 6.03 |