BEZEICHNUNG¶
setjmp - Stapelspeicher-Zusammenhang für nicht lokale Verzweigung sichern
ÜBERSICHT¶
#include <setjmp.h>
int setjmp(jmp_buf env);
int sigsetjmp(sigjmp_buf env, int savesigs);
Mit Glibc erforderliche Makros (siehe
feature_test_macros(7)):
setjmp(): siehe ANMERKUNGEN
sigsetjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE ||
_POSIX_C_SOURCE
BESCHREIBUNG¶
setjmp() und
longjmp(3) sind nützlich für die Behandlung
von Fehlern und Unterbrechungen, die in einem Unterprogramm niedriger Stufe
eines Programms auftreten.
setjmp() sichert den
Stapelspeicher-Zusammenhang bzw. die Stapelspeicher-Umgebung in
env
für spätere Benutzung durch
longjmp(3). Der
Stapelspeicher-Zusammenhang wird ungültig, wenn die Funktion, die
setjmp() aufgerufen hat, beendet wird.
sigsetjmp() ist
setjmp() ähnlich. Nur wenn
savesigs
nicht Null ist, wird die aktuelle Signalmaske des Prozesses in
env
gespeichert und wiederhergestellt, wenn später mit diesem
env ein
siglongjmp(3) durchgeführt wird.
RÜCKGABEWERT¶
setjmp() und
sigsetjmp() geben 0 zurück, falls sie sofort
zurückkehren, und nicht Null, wenn sie von
longjmp(3) oder
siglongjmp(3) zurückkehren und den gesicherten Zusammenhang
benutzen.
C89, C99 und POSIX.1-2001 spezifizieren
setjmp(). POSIX.1-2001
spezifiziert
sigsetjmp().
ANMERKUNGEN¶
POSIX spezifiziert nicht, ob
setjmp() die Signalmaske sichern wird. In
System-V wird es dies nicht tun. In 4.3BSD wird es dies tun und dort gibt es
eine Funktion
_setjmp, die es nicht tut. Standardmäßig folgt
Linux/Glibc dem Verhalten von System-V, aber das BSD-Verhalten wird
bereitgestellt, wenn das
_BSD_SOURCE-Feature-Test-Macro definiert ist
und weder
_POSIX_SOURCE,
_POSIX_C_SOURCE,
_XOPEN_SOURCE,
_XOPEN_SOURCE_EXTENDED,
_GNU_SOURCE noch
_SVID_SOURCE
definiert ist.
Falls Sie portable Signalmasken für das Speichern und Wiederherstellen
möchten, benutzen Sie
sigsetjmp() und
siglongjmp(3).
setjmp() und
sigsetjmp() erschweren das Verständnis und die
Verwaltung von Programmen. Falls möglich, sollte eine Alternative benutzt
werden.
SIEHE AUCH¶
longjmp(3),
siglongjmp(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<krd@gulu.net> und Chris Leick <c.leick@vollbio.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 <debian-l10n-german@lists.debian.org>.