LONGJMP(3)

NAZWA
longjmp, siglongjmp - nielokalny skok do zachowanego kontekstu stosu

SKŁADNIA
#include <setjmp.h>

void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);

OPIS
longjmp() i setjmp() są przydatne w obsłudze błędów i przerwań, napotykanych w niskopoziomowych procedurach programu. longjmp() odtwarza środowisko zachowane przez ostatnie wywołanie setjmp(), z odpowiadającym argumentem env. Po zakończeniu longjmp(), program działa dalej tak, jakby wywołanie setjmp() właśnie zwróciło wartość val. longjmp() nie potrafi spowodować zwrócenia 0. Jeśli longjmp jest wywołane z argumentem 0, zwrócone zostanie 1.

siglongjmp() jest podobne do longjmp(), inny jest tylko typ jego argumentu env. Jeśli wywołanie sigsetjmp(), które ustawiło env miało ustawiony niezerowy znacznik savesigs, to siglongjmp() odtworzy rónież zestaw blokowanych sygnałów.

WARTOŚĆ ZWRACANA
Funkcja ta nigdy nie powracają.

ZGODNE Z
POSIX

UWAGI
POSIX nie podaje czy longjmp powinno odtwarzać kontekst sygnałowy. Jeśli potrzebne jest zachowywanie maski sygnałów, należy używać siglongjmp.

longjmp() i siglongjmp() powodują, że programy są trudne do zrozumienia i pielęgnowania. Jeśli jest to możliwe, należy używać innych rozwiązań.

ZOBACZ TAKŻE
setjmp(3), sigsetjmp(3)