| .\" Written by Michael Haardt, Fri Nov 25 14:51:42 MET 1994 |
| .\" |
| .\" This is free documentation; you can redistribute it and/or |
| .\" modify it under the terms of the GNU General Public License as |
| .\" published by the Free Software Foundation; either version 2 of |
| .\" the License, or (at your option) any later version. |
| .\" |
| .\" The GNU General Public License's references to "object code" |
| .\" and "executables" are to be interpreted as the output of any |
| .\" document formatting or typesetting system, including |
| .\" intermediate and printed output. |
| .\" |
| .\" This manual is distributed in the hope that it will be useful, |
| .\" but WITHOUT ANY WARRANTY; without even the implied warranty of |
| .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| .\" GNU General Public License for more details. |
| .\" |
| .\" You should have received a copy of the GNU General Public |
| .\" License along with this manual; if not, write to the Free |
| .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, |
| .\" USA. |
| .\" |
| .\" Added sigsetjmp, Sun Mar 2 22:03:05 EST 1997, jrv@vanzandt.mv.com |
| .\" Modifications, Sun Feb 26 14:39:45 1995, faith@cs.unc.edu |
| .\" " |
| .TH SETJMP 3 1997-03-02 "" "Library functions" |
| .SH NAME |
| setjmp, sigsetjmp \- save stack context for non-local goto |
| .SH SYNOPSIS |
| .ad l |
| .B #include <setjmp.h> |
| .sp |
| .nf |
| .BI "int setjmp(jmp_buf " env ); |
| .BI "int sigsetjmp(sigjmp_buf " env ", int " savesigs ); |
| .fi |
| .ad b |
| .SH DESCRIPTION |
| \fBsetjmp\fP() and \fBlongjmp\fP() are useful for dealing with errors |
| and interrupts encountered in a low-level subroutine of a program. |
| \fBsetjmp\fP() saves the stack context/environment in \fIenv\fP for |
| later use by \fBlongjmp\fP(). The stack context will be invalidated |
| if the function which called \fBsetjmp\fP() returns. |
| .P |
| \fBsigsetjmp\fP() is similar to \fBsetjmp\fP(). If \fIsavesigs\fP is non-zero, |
| the set of blocked signals is saved in \fIenv\fP and will be restored |
| if a \fBsiglongjmp\fP() is later performed with this \fIenv\fP. |
| .SH "RETURN VALUE" |
| \fBsetjmp\fP() and \fBsigsetjmp\fP() return 0 if returning directly, and |
| non-zero when returning from \fBlongjmp\fP() using the saved context. |
| .SH "CONFORMING TO" |
| POSIX, ISO 9899 (C99) |
| .SH NOTES |
| POSIX does not specify whether \fBsetjmp\fP() will save the |
| signal context. (In System V it will not. In 4.3BSD it will, and there |
| is a function \fB_setjmp\fP that will not.) |
| If you want to save signal masks, use \fBsigsetjmp\fP(). |
| .P |
| \fBsetjmp\fP() and \fBsigsetjmp\fP() make programs hard to understand |
| and maintain. If possible an alternative should be used. |
| .SH "SEE ALSO" |
| .BR longjmp (3), |
| .BR siglongjmp (3) |