Close Menu
    Facebook X (Twitter) Instagram
    Command Linux
    • About
    • How to
      • Q&A
    • OS
      • Windows
      • Arch Linux
    • AI
    • Gaming
      • Easter Eggs
    • Statistics
    • Blog
      • Featured
    • MORE
      • IP Address
      • Man Pages
    • Write For Us
    • Contact
    Command Linux
    Home - man page - SETJMP

    SETJMP

    WillieBy WillieMarch 5, 2026Updated:March 5, 2026No Comments2 Mins Read
     

    NAME

    setjmp, sigsetjmp – save stack context for nonlocal goto  

    SYNOPSIS

    #include <setjmp.h>

    int setjmp(jmp_buf env);
    
    int sigsetjmp(sigjmp_buf env, int savesigs);
    

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

    setjmp(): see NOTES.
    sigsetjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE  

    DESCRIPTION

    setjmp() and longjmp(3) are useful for dealing with errors and interrupts encountered in a low-level subroutine of a program. setjmp() saves the stack context/environment in env for later use by longjmp(3). The stack context will be invalidated if the function which called setjmp() returns.

    sigsetjmp() is similar to setjmp(). If, and only if, savesigs is nonzero, the process’s current signal mask is saved in env and will be restored if a siglongjmp(3) is later performed with this env.  

    RETURN VALUE

    setjmp() and sigsetjmp() return 0 if returning directly, and nonzero when returning from longjmp(3) or siglongjmp(3) using the saved context.  

    CONFORMING TO

    C89, C99, and POSIX.1-2001 specify setjmp(). POSIX.1-2001 specifies sigsetjmp().  

    NOTES

    POSIX does not specify whether setjmp() will save the signal mask (to be later restored during longjmp(3)). In System V it will not. In 4.3BSD it will, and there is a function _setjmp that will not. On Linux with glibc versions before 2.19, setjmp() follows the System V behavior by default, but the BSD behavior is provided if the _BSD_SOURCE feature test macro is defined and none of _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, _GNU_SOURCE, or _SVID_SOURCE is defined. Since glibc 2.19, <setjmp.h> exposes only the System V version of setjmp(). Programs that need the BSD semantics should replace calls to setjmp() with calls to sigsetjmp() with a nonzero savesigs argument.

    If you want to portably save and restore signal masks, use sigsetjmp() and siglongjmp(3).

    setjmp() and sigsetjmp() make programs hard to understand and maintain. If possible, an alternative should be used.  

    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/.

    Willie
    • Website

    Willie has over 15 years of experience in Linux system administration and DevOps. After managing infrastructure for startups and enterprises alike, he founded Command Linux to share the practical knowledge he wished he had when starting out. He oversees content strategy and contributes guides on server management, automation, and security.

    Related Posts

    PSTREE

    April 20, 2026

    SIGSUSPEND

    April 20, 2026

    SETFACL

    April 20, 2026

    SYSTEMD-SYSCTL.SERVICE

    April 20, 2026
    Top Posts

    RSYSLOG.CONF

    April 11, 2026

    GitHub Linux-Related Repository Growth Statistics 2026

    April 18, 2026

    Does Anon Vault Offer Privacy and Security

    January 26, 2026

    MotionMuse.AI Statistics 2026

    March 5, 2026
    • Home
    • Contact Us
    • Privacy Policy
    • Terms of Use

    Type above and press Enter to search. Press Esc to cancel.