SETJMP(3) UNIX Programmer's Manual SETJMP(3) NAME setjmp, longjmp - non-local goto SYNOPSIS #include <setjmp.h> setjmp(env) jmp_buf env; longjmp(env, val) jmp_buf env; _setjmp(env) jmp_buf env; _longjmp(env, val) jmp_buf env; DESCRIPTION These routines are useful for dealing with errors and inter- rupts encountered in a low-level subroutine of a program. _S_e_t_j_m_p saves its stack environment in _e_n_v for later use by _l_o_n_g_j_m_p. It returns value 0. _L_o_n_g_j_m_p restores the environment saved by the last call of _s_e_t_j_m_p. It then returns in such a way that execution con- tinues as if the call of _s_e_t_j_m_p had just returned the value _v_a_l to the function that invoked _s_e_t_j_m_p, which must not itself have returned in the interim. All accessible data have values as of the time _l_o_n_g_j_m_p was called. _S_e_t_j_m_p and _l_o_n_g_j_m_p save and restore the signal mask _s_i_g_- _m_a_s_k(2), while __s_e_t_j_m_p and __l_o_n_g_j_m_p manipulate only the C stack and registers. ERRORS If the contents of the jmp_buf are corrupted, or correspond to an environment that has already returned, _l_o_n_g_j_m_p calls the routine _l_o_n_g_j_m_p_e_r_r_o_r. If _l_o_n_g_j_m_p_e_r_r_o_r returns the pro- gram is aborted. The default version of _l_o_n_g_j_m_p_e_r_r_o_r prints the message ``longjmp botch'' to standard error and returns. User programs wishing to exit more gracefully can write their own versions of _l_o_n_g_j_m_p_e_r_r_o_r. SEE ALSO sigvec(2), sigstack(2), signal(3) Printed 12/27/86 January 9, 1986 1