Sets a jump point for a nonlocal goto.
Format
#include <setjmp.h>
init sigsetjmp (sigjmp_buf env, int savemask);
1 – Arguments
env
An address for a sigjmp_buf structure.
savemask
An integer value that specifies whether you need to save the
current signal mask.
2 – Description
The sigsetjmp function saves its calling environment in its env
argument for later use by the siglongjmp function.
If the value of savemask is not 0 (zero), sigsetjmp also
saves the process's current signal mask as part of the calling
environment.
See also siglongjmp.
3 – Restrictions
You cannot invoke the longjmp function from an OpenVMS condition
handler. However, you may invoke longjmp from a signal handler
that has been established for any signal supported by the
C RTL, subject to the following nesting restrictions:
o The longjmp function will not work if you invoke it from
nested signal handlers. The result of the longjmp function,
when invoked from a signal handler that has been entered as a
result of an exception generated in another signal handler, is
undefined.
o Do not invoke the sigsetjmp function from a signal handler
unless the associated longjmp is to be issued before the
handling of that signal is completed.
o Do not invoke the longjmp function from within an exit handler
(established with atexit or SYS$DCLEXH). Exit handlers are
invoked after image tear-down, so the destination address of
the longjmp no longer exists.
o Invoking longjmp from within a signal handler to return to
the main thread of execution might leave your program in
an inconsistent state. Possible side effects include the
inability to perform I/O or to receive any more UNIX signals.
Use siglongjmp instead.
4 – Return Values
0 Indicates success.
nonzero The return is a call to the siglongjmp
function.