setjmp, longjmp - non-local jump operations
Standard C Library (libc, -lc)
longjmp(jmp_buf jb, int returncode);
setjmp saves the current stack frame and processor state in jb. A subsequent call to longjmp with the same jb causes execution to jump to where setjmp was called from.
If the stack frame that called setjmp returns before longjmp is called, the results are undefined.
When called, setjmp returns 0. When longjmp is called, it does not itself return, but instead causes setjmp to appear to return again, this time returning returncode.
If zero is passed as returncode, the value 1 is used instead.