longjmp (3)





NAME

       longjmp, siglongjmp - non-local jump to a saved stack context


SYNOPSIS

       #include <setjmp.h>

       void longjmp(jmp_buf env, int val);
       void siglongjmp(sigjmp_buf env, int val);


DESCRIPTION

       longjmp()  and  setjmp()  are useful for dealing with errors and inter-
       rupts 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 exe-
       cution  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.


RETURN VALUE

       These functions never return.


CONFORMING TO

       POSIX


NOTES

       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 main-
       tain.  If possible an alternative should be used.


SEE ALSO

       setjmp(3), sigsetjmp(3)

                                  1997-03-02                        longjmp(3)