setjmp(3)
NAME
- sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp,
- longjmperror non-local jumps
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <setjmp.h> int sigsetjmp(sigjmp_buf env, int savemask); void siglongjmp(sigjmp_buf env, int val); int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); int _setjmp(jmp_buf env); void _longjmp(jmp_buf env, int val); void longjmperror(void);
DESCRIPTION
- The sigsetjmp(), setjmp(), and _setjmp() functions save
- their calling
environment in env. Each of these functions returns 0. - The corresponding longjmp() functions restore the environ
- ment saved by
their most recent respective invocations of the setjmp() - function. They
then return so that program execution continues as if the - corresponding
invocation of the setjmp() call had just returned the value - specified by
val, instead of 0. - Pairs of calls may be intermixed, i.e., both sigsetjmp() and
- siglongjmp()
and setjmp() and longjmp() combinations may be used in the - same program,
however, individual calls may not, e.g. the env argument to - setjmp() may
not be passed to siglongjmp(). - The longjmp() routines may not be called after the routine
- which called
the setjmp() routines returns. - All accessible objects have values as of the time longjmp()
- routine was
called, except that the values of objects of automatic stor - age invocation
duration that do not have the volatile type and have been - changed between
the setjmp() invocation and longjmp() call are indetermi - nate.
- The setjmp()/longjmp() pairs save and restore the signal
- mask while
_setjmp()/_longjmp() pairs save and restore only the regis - ter set and the
stack. (See sigprocmask(2).) - The sigsetjmp()/siglongjmp() function pairs save and restore
- the signal
mask if the argument savemask is non-zero, otherwise only - the register
set and the stack are saved.
ERRORS
- If the contents of the env are corrupted, or correspond to
- an environment
that has already returned, the longjmp() routine calls the - routine
longjmperror(3). If longjmperror() returns the program is - aborted (see
abort(3)). The default version of longjmperror() prints the - message
``longjmp botch'' to standard error and returns. User pro - grams wishing
to exit more gracefully should write their own versions of
longjmperror().
SEE ALSO
sigaction(2), sigaltstack(2), signal(3)
STANDARDS
- The setjmp() and longjmp() functions conform to ISO/IEC
- 9899:1990
(``ISO C89''). The sigsetjmp() and siglongjmp() functions - conform to
IEEE Std 1003.1-1988 (``POSIX.1''). - BSD June 4, 1993