SIGLONGJMP(3) BSD SIGLONGJMP(3)
NAME
siglongjmp - nonlocal goto with signal handling
SYNOPSIS
#include <setjmp.h>
void siglongjmp (env, value)
sigjmp_buf env;
int value;
DESCRIPTION
The siglongjmp function restores the environment saved by the most recent
sigsetjmp(3) function in the same process with the corresponding
sigjmp_buf argument. The env argument specifies an address for a
sigjmp_buf structure and the value argument specifies any nonzero value.
If there is no such invocation or if the function containing the
invocation of the sigsetjmp macro has terminated execution in the
interim, the behavior is undefined.
All accessible objects have values as of the time siglongjmp was called,
except that the values of objects of automatic storage duration that have
been changed between the sigsetjmp(3) call and siglongjmp call are
indeterminate.
As it bypasses the usual function call and return mechanisms, the
siglongjmp function executes correctly in contexts of interrupts,
signals, and any of their associated functions. However, if the
siglongjmp function is invoked from a nested signal 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 siglongjmp function restores the saved signal mask if and only if the
env argument was initialized by a call to the sigsetjmp(3) function with
a nonzero savemask argument.
DIAGNOSTICS
After siglongjmp completes, program execution continues as if the
corresponding call of the sigsetjmp(3) function had just returned the
value specified by the value argument. The siglongjmp function cannot
cause sigsetjmp(3) to return 0 (zero); if value is 0, the sigsetjmp(3)
function returns 1.
SEE ALSO
longjmp(3C), setjmp(3C), sigprocmask(2), sigsetjmp(3), sigsuspend(2)
<setjmp.h>