Документация по LinuxLinuxDoc.Ru 🔍

setjmp, sigsetjmp - сохранение контекста стека при нелокальном переходе

НАЗВАНИЕ
setjmp, sigsetjmp - сохранение контекста стека при
нелокальном переходе

СИНТАКСИС
#include

int setjmp(jmp_buf env);
int sigsetjmp(sigjmp_buf env, int savesigs);

ОПИСАНИЕ

Функции setjmp() и longjmp() используются для работы с
ошибками и прерываниями, встречающимися в подпрограммах
низкого уровня. setjmp() сохраняет стек
контекста/окружения в env для дальнейшего его
использования функцией longjmp(). Стек контекста будет
обнулен, если функция, вызвавшая setjmp(), завершит
работу.

Функция sigsetjmp() идентична setjmp(). Если savesigs не
равно нулю, то набор заблокированных сигналов сохраняется
в env и будет восстановлен, если в дальнейшем siglongjmp()
будет работать с указанным env.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

setjmp() и sigsetjmp() возвращают 0 при непосредственном
выходе и ненулевое значение при выходе из longjmp() с
использованием сохраненного контекста.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX, ISO 9899 (C99)

ЗАМЕЧАНИЯ

POSIX не уточняет, должна ли setjmp сохранять контекст
сигнала. В SYSV - не должна. В BSD4.3 такое сохранение
обязательно, хотя в данной ОС есть функция _setjmp,
которая контекст не сохраняет. Если Вам необходимо
сохранить маски сигналов, используйте sigsetjmp.

setjmp() и sigsetjmp делают программы трудночитаемыми. По
возможности используйте альтернативные им функции.
Читать новости Linux в Telegram
Linux - setjmp, sigsetjmp - сохранение контекста стека при нелокальном переходе
Мы в соцсетях ✉