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

FreeBSD Manual Pages

  
 
  

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

NAME
       longjmp,	siglongjmp - nonlocal jump to a	saved stack context

SYNOPSIS
       #include	<setjmp.h>

       void longjmp(jmp_buf env, int val);

       void siglongjmp(sigjmp_buf env, int val);

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

       siglongjmp(): _POSIX_C_SOURCE >=	1 || _XOPEN_SOURCE || _POSIX_C_SOURCE

DESCRIPTION
       longjmp()  and  setjmp(3) are useful for	dealing	with errors and	inter-
       rupts encountered in a low-level	subroutine of  a  program.   longjmp()
       restores	 the  environment saved	by the last call of setjmp(3) with the
       corresponding env argument.  After longjmp() is completed, program exe-
       cution continues	as if the corresponding	call of	setjmp(3) had just re-
       turned the value	val.  longjmp()	cannot cause 0	to  be	returned.   If
       longjmp()  is  invoked  with a second argument of 0, 1 will be returned
       instead.

       siglongjmp() is similar to longjmp() except for the type	of its env ar-
       gument.	 If, and only if, the sigsetjmp(3) call	that set this env used
       a nonzero savesigs flag,	siglongjmp() also  restores  the  signal  mask
       that was	saved by sigsetjmp(3).

RETURN VALUE
       These functions never return.

CONFORMING TO
       C89,  C99,  and POSIX.1-2001 specify longjmp().	POSIX.1-2001 specifies
       siglongjmp().

NOTES
       POSIX does not specify whether longjmp()	will restore the  signal  con-
       text  (see  setjmp(3)  for some more details).  If you want to portably
       save and	restore	signal masks, use sigsetjmp(3) and siglongjmp().

       The values of automatic variables  are  unspecified  after  a  call  to
       longjmp() if they meet all the following	criteria:

       o  they are local to the	function that made the corresponding setjmp(3)
	  call;

       o  their	 values	 are  changed  between	the  calls  to	setjmp(3)  and
	  longjmp(); and

       o  they are not declared	as volatile.

       Analogous remarks apply for siglongjmp().

       longjmp()  and  siglongjmp() make programs hard to understand and main-
       tain.  If possible, an alternative should be used.

SEE ALSO
       setjmp(3), sigsetjmp(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/.

				  2009-01-13			    LONGJMP(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=siglongjmp&sektion=3&manpath=Debian+8.1.0>

home | help