setjmp, sigsetjmp - save stack context for non-local goto


SYNOPSIS

       #include <setjmp.h>

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


DESCRIPTION

       setjmp()  and longjmp() are useful for dealing with errors
       and interrupts encountered in a low-level subroutine of  a
       program.   setjmp() saves the stack context/environment in
       env for later use by longjmp().  The stack context will be
       invalidated if the function which called setjmp() returns.

       sigsetjmp()  is  similar  to  setjmp().   If  savesigs  is
       nonzero,  the  set  of blocked signals is saved in env and
       will be restored if a siglongjmp() is later performed with
       this env.


RETURN VALUE

       setjmp()  and  sigsetjmp() return 0 if returning directly,
       and non-zero when returning from longjmp() using the saved
       context.


CONFORMING TO

       POSIX, ISO 9899


NOTES

       POSIX does not specify whether setjmp will save the signal
       context. (In SYSV it will not.  In  BSD4.3  it  will,  and
       there  is  a function _setjmp that will not.)  If you want
       to save signal masks, use sigsetjmp.

       setjmp() and sigsetjmp make programs  hard  to  understand
       and  maintain.  If possible an alternative should be used.


SEE ALSO

       longjmp(3), siglongjmp(3)


Man(1) output converted with man2html