Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SETJMP(3)		   Linux Programmer's Manual		     SETJMP(3)

NAME
       setjmp, sigsetjmp - save	stack context for nonlocal goto

SYNOPSIS
       #include	<setjmp.h>

       int setjmp(jmp_buf env);

       int sigsetjmp(sigjmp_buf	env, int savesigs);

   Feature Test	Macro Requirements for glibc (see feature_test_macros(7)):

       setjmp(): see NOTES.
       sigsetjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE

DESCRIPTION
       setjmp()	 and  longjmp(3) are useful for	dealing	with errors and	inter-
       rupts encountered in a low-level	subroutine  of	a  program.   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
       setjmp()	returns.

       sigsetjmp()  is similar to setjmp().  If, and only if, savesigs is non-
       zero, the process's current signal mask is saved	in env and will	be re-
       stored if a siglongjmp(3) is later performed with this env.

RETURN VALUE
       setjmp()	 and  sigsetjmp()  return 0 if returning directly, and nonzero
       when returning from longjmp(3) or siglongjmp(3) using  the  saved  con-
       text.

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

NOTES
       POSIX does not specify whether setjmp() will save the signal  mask  (to
       be  later  restored  during  longjmp(3)).  In System V it will not.  In
       4.3BSD it will, and there is a function	_setjmp	 that  will  not.   On
       Linux  with  glibc  versions before 2.19, setjmp() follows the System V
       behavior	 by  default,  but  the	 BSD  behavior	is  provided  if   the
       _BSD_SOURCE  feature  test  macro is defined and	none of	_POSIX_SOURCE,
       _POSIX_C_SOURCE,	_XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, _GNU_SOURCE, or
       _SVID_SOURCE is defined.	 Since glibc 2.19, _setjmp.h_ exposes only the
       System V	version	of setjmp().  Programs that  need  the	BSD  semantics
       should  replace calls to	setjmp() with calls to sigsetjmp() with	a non-
       zero savesigs argument.

       If you want to portably save and	restore	signal masks, use  sigsetjmp()
       and siglongjmp(3).

       setjmp()	and sigsetjmp()	make programs hard to understand and maintain.
       If possible, an alternative should be used.

SEE ALSO
       longjmp(3), siglongjmp(3)

COLOPHON
       This page is part of release 3.74 of the	Linux  man-pages  project.   A
       description  of	the project, information about reporting bugs, and the
       latest	 version    of	  this	  page,	   can	   be	  found	    at
       http://www.kernel.org/doc/man-pages/.

				  2014-01-07			     SETJMP(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | CONFORMING TO | NOTES | SEE ALSO | COLOPHON

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=setjmp&sektion=3&manpath=Debian+8.1.0>

home | help