Originální popis anglicky:
longjmp, siglongjmp - non-local jump to a saved stack context
Návod, kniha: Library functions
#include <setjmp.h>
void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);
longjmp() and
setjmp() are useful for dealing with errors and
interrupts encountered in a low-level subroutine of a program.
longjmp() restores the environment saved by the last call of
setjmp() with the corresponding
env argument. After
longjmp() is completed, program execution continues as if the
corresponding call of
setjmp() had just returned the value
val.
longjmp() cannot cause 0 to be returned. If longjmp is invoked with a
second argument of 0, 1 will be returned instead.
siglongjmp() is similar to
longjmp() except for the type of its
env argument. If the
sigsetjmp() call that set this
env
used a nonzero
savesigs flag,
siglongjmp() also restores the set
of blocked signals.
These functions never return.
POSIX
POSIX does not specify whether
longjmp will restore the signal context.
If you want to save and restore signal masks, use
siglongjmp.
longjmp() and
siglongjmp() make programs hard to understand and
maintain. If possible an alternative should be used.
setjmp(3),
sigsetjmp(3)