4.3BSD-Tahoe/usr/man/cat3/_longjmp.0
SETJMP(3) UNIX Programmer's Manual SETJMP(3)
NNAAMMEE
setjmp, longjmp - non-local goto
SSYYNNOOPPSSIISS
##iinncclluuddee <<sseettjjmmpp..hh>>
sseettjjmmpp((eennvv))
jjmmpp__bbuuff eennvv;;
lloonnggjjmmpp((eennvv,, vvaall))
jjmmpp__bbuuff eennvv;;
__sseettjjmmpp((eennvv))
jjmmpp__bbuuff eennvv;;
__lloonnggjjmmpp((eennvv,, vvaall))
jjmmpp__bbuuff eennvv;;
DDEESSCCRRIIPPTTIIOONN
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.
EERRRROORRSS
If the contents of the jjmmpp__bbuuff 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.
SSEEEE AALLSSOO
sigvec(2), sigstack(2), signal(3)
Printed 7/9/88 January 9, 1986 1