setjmp(3) Library Functions Manual setjmp(3) setjmp, sigsetjmp, longjmp, siglongjmp - (libc -lc) #include int setjmp(jmp_buf env); int sigsetjmp(sigjmp_buf env, int savesigs); [[noreturn]] void longjmp(jmp_buf env, int val); [[noreturn]] void siglongjmp(sigjmp_buf env, int val); glibc ( feature_test_macros(7)): setjmp(): . sigsetjmp(): _POSIX_C_SOURCE " ": . setjmp() longjmp() . setjmp() ( ) env longjmp(). setjmp() 0. longjmp() env setjmp() ("") setjmp(). ( ) setjmp(). longjmp() setjmp() . "" setjmp() "" val. 0 val "" 1 . sigsetjmp() siglongjmp() sigsetjmp() siglongjmp() . savesigs sigsetjmp() env siglongjmp() env. setjmp() sigsetjmp() 0 "" longjmp() siglongjmp() val. longjmp() siglongjmp() . attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |setjmp() | | MT-Safe | |sigsetjmp() | | | +------------+------------------------------------+--------------------+ |longjmp()| | MT-Safe | |siglongjmp()| | | +------------+------------------------------------+--------------------+ setjmp() longjmp() C11, POSIX.1-2008. sigsetjmp() siglongjmp() POSIX.1-2008. setjmp() longjmp() POSIX.1-2001 C89. sigsetjmp() siglongjmp() POSIX.1-2001. POSIX setjmp() ( longjmp()). System V . 4.3BSD _setjmp() . Linux glibc . glibc 2.19 setjmp() System V BSD _BSD_SOURCE _POSIX_SOURCE _POSIX_C_SOURCE _XOPEN_SOURCE _GNU_SOURCE _SVID_SOURCE. glibc 2.19 System V setjmp(). BSD setjmp() sigsetjmp() savesigs . setjmp() longjmp() . sigsetjmp() siglongjmp(). . longjmp() . longjmp() : o setjmp() o setjmp() longjmp() o volatile. siglongjmp(). C "goto" ( goto ) . : setjmp() jmp_buf . longjmp() . ( setjmp() jmp_buf .) setjmp() longjmp() . . setjmp() longjmp() . . longjmp() env setjmp() . POSIX.1-2008 2 longjmp() siglongjmp() . ( exit(3) main()) . : o main(). o main(). signal(7), signal-safety(7) 3 . . : . 6.18 8 2026 setjmp(3)