LONGJMP(3)

НАЗВАНИЕ
longjmp, siglongjmp - длинный переход к сохраненному контексту стека

СИНТАКСИС
#include <setjmp.h>

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

ОПИСАНИЕ
Функции longjmp() и setjmp() очень полезны при работе с ошибками и прерываниями, встречающимися при выполнении низкоуровневых процедур программ. longjmp() восстанавливает окружение, сохраненное последним вызовом setjmp() с соответствующим параметром env. После того, как завершится выполнение функции longjmp() и соответствующий вызов от setjmp() возвратит значение val, выполнение программы продолжится. longjmp() никогда не возвратит 0. Если longjmp запускается со вторым параметром, равным 0, то вместо него возвратится 1.

siglongjmp() подобен longjmp(), но не типу аргумента env. Если sigsetjmp() вызывает его, то env использует ненулевой флаг savesigs и siglongjmp() также восстанавливает настройку заблокированных сигналов.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Данные функции не возвращают значений.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX

ЗАМЕЧАНИЯ
POSIX не определяет, будет ли longjmp восстанавливать содержание контекста сигнала. Если Вы хотите сохранять и восстанавливать маску сигнала, то используйте siglongjmp.

Функции longjmp() и siglongjmp() делают программы трудными для восприятия и дальнейшей поддержки и отладки. По возможности используйте в работе другие методы и программы.

СМ. ТАКЖЕ
setjmp(3), sigsetjmp(3)