Non-Local Exits and Signals
===========================
In BSD Unix systems, `setjmp' and `longjmp' also save and restore
the set of blocked signals; see Note:Blocking Signals. However, the
POSIX.1 standard requires `setjmp' and `longjmp' not to change the set
of blocked signals, and provides an additional pair of functions
(`sigsetjmp' and `siglongjmp') to get the BSD behavior.
The behavior of `setjmp' and `longjmp' in the GNU library is
controlled by feature test macros; see Note:Feature Test Macros. The
default in the GNU system is the POSIX.1 behavior rather than the BSD
behavior.
The facilities in this section are declared in the header file
`setjmp.h'.
- Data Type: sigjmp_buf
This is similar to `jmp_buf', except that it can also store state
information about the set of blocked signals.
- Function: int sigsetjmp (sigjmp_buf STATE, int SAVESIGS)
This is similar to `setjmp'. If SAVESIGS is nonzero, the set of
blocked signals is saved in STATE and will be restored if a
`siglongjmp' is later performed with this STATE.
- Function: void siglongjmp (sigjmp_buf STATE, int VALUE)
This is similar to `longjmp' except for the type of its STATE
argument. If the `sigsetjmp' call that set this STATE used a
nonzero SAVESIGS flag, `siglongjmp' also restores the set of
blocked signals.