siglongjmp (3)

LONGJMP(3) Linux Programmer's Manual 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); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): siglongjmp(): _POSIX_C_SOURCE || _XOPEN_SOURCE DESCRIPTION longjmp() and setjmp(3) 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(3) with the corresponding env argument. After longjmp() is completed, program exe- cution continues as if the corresponding call of setjmp(3) 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(3) call that set this env used a non-zero savesigs flag, siglongjmp() also restores the set of blocked signals. RETURN VALUE These functions never return. CONFORMING TO C89, C99, and POSIX.1-2001 specify longjmp(). POSIX.1-2001 specifies siglongjmp(). NOTES POSIX does not specify whether longjmp() will restore the signal con- text. If you want to save and restore signal masks, use siglongjmp(). The values of automatic variables are unspecified after a call to longjmp() if they meet all the following criteria: ? they are local to the function that made the corresponding setjmp(3) call; ? their values are changed between the calls to setjmp(3) and longjmp(); and ? they are not declared as volatile. Analogous remarks apply for 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) 2007-09-06 LONGJMP(3)