NAME
setjmp — set jump
point for a non-local goto
SYNOPSIS
#include <setjmp.h> int setjmp(jmp_buf env);
DESCRIPTION
A call to setjmp() , saves the calling environment in its env argument for later use by longjmp(3) .
It is unspecified whether setjmp() is a macro or
a function. If a macro definition is suppressed in order to access an actual
function, or a program defines an external identifier with the name
setjmp the behaviour is undefined.
All accessible objects have values as of the time longjmp() was called, except that the values of objects of automatic storage duration which are local to the function containing the invocation of the corresponding setjmp() which do not have volatile-qualified type and which are changed between the setjmp() invocation and longjmp() call are indeterminate.
An invocation of setjmp() must appear in one of the following contexts only:
- the entire controlling expression of a selection or iteration statement
- one operand of a relational or equality operator with the other operand an integral constant expression, with the resulting expression being the entire controlling expression of a selection or iteration statement
- the operand of a unary "!" operator with the resulting expression being the entire controlling expression of a selection or iteration
- the entire expression of an expression statement (possibly cast to void ).
RETURN VALUE
If the return is from a direct invocation, setjmp() returns 0. If the return is from a call to longjmp(3) , setjmp() returns a non-zero value.
ERRORS
No errors are defined.
EXAMPLES
None.
APPLICATION USAGE
In general, sigsetjmp(3) is more useful in dealing with errors and interrupts encountered in a low-level subroutine of a program.
FUTURE DIRECTIONS
None.
SEE ALSO
longjmp(3) , sigsetjmp(3) , <setjmp.h> .
DERIVATION
Derived from Issue 1 of the SVID.