SETJMP(3)                      Library Routines                      SETJMP(3)




NAME

       sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp, longjmperror
       - non-local jumps


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  envi‐
       ronment in (env) Each of these functions returns 0.

       The  corresponding  longjmp  functions restore the environment 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 storage  invoca‐
       tion  duration that do not have the volatile type and have been changed
       between the setjmp invocation and longjmp call are indeterminate.

       The setjmp/longjmp  pairs  save  and  restore  the  signal  mask  while
       _setjmp/_longjmp  pairs  save and restore only the register 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  environ‐
       ment  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 programs wishing  to
       exit more gracefully should write their own versions of longjmperror.


NOTES

       The  implementation  of these routines differs from the Orca/C version,
       as does type of jump_buf defined in <setjmp.h>.  The two are  not  com‐
       patible and cannot be mixed.

       sigsetjmp and siglongjmp are not currently implemented under GNO.


SEE ALSO

       sigaction(2), sigaltstack(2), signal(3)


STANDARDS

       The  setjmp and longjmp functions conform to ANSI/C.  The sigsetjmp and
       siglongjmp functions conform to POSIX 1003.1-88.



GNO                             28 January 1997                      SETJMP(3)

Man(1) output converted with man2html