The Open Group Base Specifications Issue 7
IEEE Std 1003.1-2008, 2016 Edition
Copyright © 2001-2016 The IEEE and The Open Group

#### NAME

> setjmp - set jump point for a non-local goto

#### SYNOPSIS

> ``#include <setjmp.h>
> int setjmp(jmp_buf` env`);
> ``

#### DESCRIPTION

> [CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2008 defers to the ISO C standard.

> A call to setjmp() shall save the calling environment in its env argument for later use by longjmp().

> It is unspecified whether setjmp() is a macro or a function. If a macro definition is suppressed in order to access an actual function, or a program defines an external identifier with the name setjmp, the behavior is undefined.

> An application shall ensure that an invocation of setjmp() appears in one of the following contexts only:

> - The entire controlling expression of a selection or iteration statement

> - One operand of a relational or equality operator with the other operand an integral constant expression, with the resulting expression being the entire controlling expression of a selection or iteration statement

> - The operand of a unary `'!'` operator with the resulting expression being the entire controlling expression of a selection or iteration

> - The entire expression of an expression statement (possibly cast to void)

> If the invocation appears in any other context, the behavior is undefined.

#### RETURN VALUE

> If the return is from a direct invocation, setjmp() shall return 0. If the return is from a call to longjmp(), setjmp() shall return a non-zero value.

#### ERRORS

> No errors are defined.

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> In general, sigsetjmp() is more useful in dealing with errors and interrupts encountered in a low-level subroutine of a program.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> longjmp, sigsetjmp

> XBD <setjmp.h>

#### CHANGE HISTORY

> First released in Issue 1. Derived from Issue 1 of the SVID.

#### Issue 6

> The normative text is updated to avoid use of the term "must" for application requirements.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2016 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]