setjmp

NAME

setjmp, sigsetjmp - save stack context for non-local goto

SYNOPSIS

#include <setjmp.h>
I int setjmp(jmp_buf  env );
I int sigsetjmp(sigjmp_buf  env , int  savesigs );

DESCRIPTION

R setjmp () and longjmp(3) are useful for dealing with errors and interrupts encountered in a low-level subroutine of a program. R setjmp () saves the stack context/environment in env for later use by longjmp(3). The stack context will be invalidated if the function which called R setjmp () returns.
R sigsetjmp () is similar to R setjmp (). If savesigs is non-zero, the set of blocked signals is saved in env and will be restored if a siglongjmp(3) is later performed with this env.

RETURN VALUE

R setjmp () and R sigsetjmp () return 0 if returning directly, and non-zero when returning from longjmp(3) using the saved context.

CONFORMING TO

C89, C99, and POSIX.1-2001 specify R setjmp (). POSIX.1-2001 specifies R sigsetjmp ().

NOTES

POSIX does not specify whether R setjmp () will save the signal context. (In System V it will not. In 4.3BSD it will, and there is a function _setjmp that will not.) If you want to save signal masks, use R sigsetjmp ().
R setjmp () and R sigsetjmp () make programs hard to understand and maintain. If possible an alternative should be used.

SEE ALSO