sigsuspend(2) System Calls Manual sigsuspend(2) BEZEICHNUNG sigsuspend, rt_sigsuspend - Auf ein Signal warten BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int sigsuspend(const sigset_t *Maske); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): sigsuspend(): _POSIX_C_SOURCE BESCHREIBUNG sigsuspend() ersetzt temporar die Signalmaske des aufrufenden Threads mit der in Maske ubergebenen Maske und suspendiert den Thread anschliessend, 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 zuruck. Falls das Signal abgefangen wird, dann kehrt sigsuspend() nach Ruckkehr des Signal-Handhabers zuruck und die Signalmaske wird auf den Zustand von vor dem Aufruf von sigsuspend() zuruckgesetzt. Es ist nicht moglich, SIGKILL oder SIGSTOP zu blockieren. Die Angabe dieser Signale in Maske hat keine Auswirkung auf die Signalmaske des Threads. RUCKGABEWERT sigsuspend() liefert immer -1 zuruck, wobei errno gesetzt wird, um den Fehler anzuzeigen (normalerweise EINTR). FEHLER EFAULT Maske zeigt auf Speicher, der kein gultiger 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 ursprungliche Systemaufruf hiess sigsuspend(). Als allerdings die Echtzeitsignale in Linux 2.2 hinzugefugt wurden, war der Typ sigset_t mit fester 32-bit-Grosse nicht mehr fur den Zweck geeignet. Konsequenterweise wurde ein neuer Systemaufruf rt_sigsuspend() hinzugefugt, um einen vergrosserten Typ sigset_t zu unterstutzen. Der neue Systemaufruf akzeptiert ein zweites Argument, size_t sigsetsize, das die Grosse 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 wahrend der Ausfuhrung 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) zuruckgeliefert wurde, auf die Signale. Siehe sigsetops(3) fur Details uber das Bearbeiten von Signalgruppen. SIEHE AUCH kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3), signal(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.12 23. Juli 2024 sigsuspend(2)