# sigset

## NAME



           sigset, sighold, sigrelse, sigignore - System V signal API
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <signal.h>**
    
           **typedef typeof(void (int))  *sighandler_t;**
    
           **[[deprecated]] sighandler_t sigset(int** _sig_**, sighandler_t** _disp_**);**
    
           **[[deprecated]] int sighold(int** _sig_**);**
           **[[deprecated]] int sigrelse(int** _sig_**);**
           **[[deprecated]] int sigignore(int** _sig_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **sigset**(), **sighold**(), **sigrelse**(), **sigignore**():
               _XOPEN_SOURCE >= 500
    


## DESCRIPTION



           These functions are provided in glibc as a compatibility interface
           for programs that make use of the historical System V signal API.
           This API is obsolete: new applications should use the POSIX signal
           API (sigaction(2), sigprocmask(2), etc.)
    
           The **sigset**() function modifies the disposition of the signal _sig_.
           The _disp_ argument can be the address of a signal handler function,
           or one of the following constants:
    
           **SIG_DFL**
                  Reset the disposition of _sig_ to the default.
    
           **SIG_IGN**
                  Ignore _sig_.
    
           **SIG_HOLD**
                  Add _sig_ to the process's signal mask, but leave the
                  disposition of _sig_ unchanged.
    
           If _disp_ specifies the address of a signal handler, then _sig_ is
           added to the process's signal mask during execution of the
           handler.
    
           If _disp_ was specified as a value other than **SIG_HOLD** , then _sig_ is
           removed from the process's signal mask.
    
           The dispositions for **SIGKILL** and **SIGSTOP** cannot be changed.
    
           The **sighold**() function adds _sig_ to the calling process's signal
           mask.
    
           The **sigrelse**() function removes _sig_ from the calling process's
           signal mask.
    
           The **sigignore**() function sets the disposition of _sig_ to **SIG_IGN**.
    


## RETURN VALUE



           On success, **sigset**() returns **SIG_HOLD** if _sig_ was blocked before
           the call, or the signal's previous disposition if it was not
           blocked before the call.  On error, **sigset**() returns -1, with
           _errno_ set to indicate the error.  (But see BUGS below.)
    
           The **sighold**(), **sigrelse**(), and **sigignore**() functions return 0 on
           success; on error, these functions return -1 and set _errno_ to
           indicate the error.
    


## ERRORS



           For **sigset**() see the ERRORS under sigaction(2) and sigprocmask(2).
    
           For **sighold**() and **sigrelse**() see the ERRORS under sigprocmask(2).
    
           For **sigignore**(), see the errors under sigaction(2).
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **sigset**(), **sighold**(), **sigrelse**(),     │ Thread safety │ MT-Safe │
           │ **sigignore**()                          │               │         │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           POSIX.1-2008.
    
           _sighandler_t_
                  GNU.  POSIX.1 uses the same type but without a _typedef_.
    


## NOTES



           The **sigset**() function provides reliable signal handling semantics
           (as when calling sigaction(2) with _sa_mask_ equal to 0).
    
           On System V, the **signal**() function provides unreliable semantics
           (as when calling sigaction(2) with _sa_mask_ equal to _SA_RESETHAND |_
           _SA_NODEFER_).  On BSD, **signal**() provides reliable semantics.
           POSIX.1-2001 leaves these aspects of **signal**() unspecified.  See
           signal(2) for further details.
    
           In order to wait for a signal, BSD and System V both provided a
           function named sigpause(3), but this function has a different
           argument on the two systems.  See sigpause(3) for details.
    


## BUGS



           Before glibc 2.2, **sigset**() did not unblock _sig_ if _disp_ was
           specified as a value other than **SIG_HOLD**.
    
           Before glibc 2.5, **sigset**() does not correctly return the previous
           disposition of the signal in two cases.  First, if _disp_ is
           specified as **SIG_HOLD** , then a successful **sigset**() always returns
           **SIG_HOLD**.  Instead, it should return the previous disposition of
           the signal (unless the signal was blocked, in which case **SIG_HOLD**
           should be returned).  Second, if the signal is currently blocked,
           then the return value of a successful **sigset**() should be **SIG_HOLD**.
           Instead, the previous disposition of the signal is returned.
           These problems have been fixed since glibc 2.5.
    


* * *