SETJMP(3)

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.

KONFORM ZU
C89, C99 und POSIX.1-2001 spezifizieren setjmp(). POSIX.1-2001 spezifiziert sigsetjmp().

ANMERKUNGEN
POSIX spezifiziert nicht, ob setjmp() die Signalmaske sichern wird (um sie später während longjmp(3) wieder herzustellen). 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. Unter Linux mit Glibc-Versionen vor 2.19 folgte setjmp() standardmäßig 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. Seit Glibc 2.19 stellt <setjmp.h> nur die System-V-Version von setjmp() bereit. Programme, die die BSD-Semantik benötigen, sollten Aufrufe von setjmp() durch Aufrufe von sigsetjmp(), bei denen das Argument savesigs ungleich numerisch Null ist, ersetzen. 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
This page is part of release 3.80 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at 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>.