Man Pages

longjmp(3p) - phpMan longjmp(3p) - phpMan

Command: man perldoc info search(apropos)  

LONGJMP(3P)                POSIX Programmer's Manual               LONGJMP(3P)

       This manual page is part of the POSIX Programmer's Manual.  The Linux implementation of this interface may dif-
       fer (consult the corresponding Linux manual page for details of Linux behavior), or the interface  may  not  be
       implemented on Linux.

       longjmp - non-local goto

       #include <setjmp.h>

       void longjmp(jmp_buf env, int val);

       The  longjmp()  function  shall  restore the environment saved by the most recent invocation of setjmp() in the
       same thread, with the corresponding jmp_buf argument. If there is no such invocation, or if the  function  con-
       taining  the  invocation  of setjmp() has terminated execution in the interim, or if the invocation of setjmp()
       was within the scope of an identifier with variably modified type and execution has  left  that  scope  in  the
       interim,  the behavior is undefined.   It is unspecified whether longjmp() restores the signal mask, leaves the
       signal mask unchanged, or restores it to its value at the time setjmp() was called.

       All accessible objects have values, and all other components of the abstract machine have state  (for  example,
       floating-point  status  flags  and  open files), as of the time longjmp() was called, except that the values of
       objects of automatic storage duration are unspecified if they meet all the following conditions:

        * They are local to the function containing the corresponding setjmp() invocation.

        * They do not have volatile-qualified type.

        * They are changed between the setjmp() invocation and longjmp() call.

       As it bypasses the usual function call and return mechanisms, longjmp() shall execute correctly in contexts  of
       interrupts, signals, and any of their associated functions. However, if longjmp() is invoked from a nested sig-
       nal handler (that is, from a function invoked as a result of a signal raised during  the  handling  of  another
       signal), the behavior is undefined.

       The  effect of a call to longjmp() where initialization of the jmp_buf structure was not performed in the call-
       ing thread is undefined.

       After longjmp() is completed, program execution continues as if the corresponding invocation  of  setjmp()  had
       just  returned  the value specified by val. The longjmp() function shall not cause setjmp() to return 0; if val
       is 0, setjmp() shall return 1.

       No errors are defined.

       The following sections are informative.


       Applications whose behavior depends on the value of the signal mask should  not  use  longjmp()  and  setjmp(),
       since  their  effect on the signal mask is unspecified, but should instead use the siglongjmp() and sigsetjmp()
       functions (which can save and restore the signal mask under application control).



       setjmp(),  sigaction(),  siglongjmp(),  sigsetjmp(),  the  Base  Definitions  volume  of  IEEE Std 1003.1-2001,

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Stan-
       dard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base  Specifica-
       tions  Issue  6,  Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The
       Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Stan-
       dard,  the  original  IEEE  and  The  Open Group Standard is the referee document. The original Standard can be
       obtained online at .

IEEE/The Open Group                  2003                          LONGJMP(3P)