NAME
setjmp, sigsetjmp - save stack context for non-local goto
SYNOPSIS
#include <setjmp.h>
I int setjmp(jmp_buf env );
I int sigsetjmp(sigjmp_buf env , int savesigs );
DESCRIPTION
R setjmp ()
and
longjmp(3)
are useful for dealing with errors
and interrupts encountered in a low-level subroutine of a program.
R setjmp ()
saves the stack context/environment in
env for
later use by
longjmp(3).
The stack context will be invalidated
if the function which called
R setjmp ()
returns.
R sigsetjmp ()
is similar to
R setjmp ().
If
savesigs is non-zero,
the set of blocked signals is saved in
env and will be restored
if a
siglongjmp(3)
is later performed with this
env.
RETURN VALUE
R setjmp ()
and
R sigsetjmp ()
return 0 if returning directly, and
non-zero when returning from
longjmp(3)
using the saved context.
CONFORMING TO
C89, C99, and POSIX.1-2001 specify
R setjmp ().
POSIX.1-2001 specifies
R sigsetjmp ().
NOTES
POSIX does not specify whether
R setjmp ()
will save the
signal context.
(In System V it will not.
In 4.3BSD it will, and there
is a function _setjmp that will not.)
If you want to save signal masks, use
R sigsetjmp ().
R setjmp ()
and
R sigsetjmp ()
make programs hard to understand
and maintain.
If possible an alternative should be used.
SEE ALSO