sigset

NAME

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

SYNOPSIS

#define _XOPEN_SOURCE 500
#include <signal.h> typedef void (*sighandler_t)(int); I sighandler_t sigset(int sig , sighandler_t disp ); I int sighold(int sig ); I int sigrelse(int sig ); I int sigignore(int sig );

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 R sigset () function modifies the disposition of the signal R sig . The disp argument can be the address of a signal handler function, or one of the following constants:
R SIG_DFL
Reset the disposition of sig to the default.
R SIG_IGN
Ignore R sig .
R 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 R SIG_HOLD , then sig is removed from the process's signal mask.
The dispositions for SIGKILL and SIGSTOP cannot be changed.
The R sighold () function adds sig to the calling process's signal mask. The R sigrelse () function removes sig from the calling process's signal mask. The R sigignore () function sets the disposition of sig to R SIG_IGN .

RETURN VALUE

On success, R 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, R sigset () returns -1, with errno set to indicate the error. The R sighold (), R sigrelse (), and R sigignore () functions return 0 on success; on error, these functions return -1 and set errno to indicate the error.

ERRORS

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

CONFORMING TO

SVr4, POSIX.1-2001. These functions are obsolete: do not use them in new programs.

NOTES

These functions appeared in glibc version 2.1. The sighandler_t type is a GNU extension; it is only used on this page to make the R sigset () prototype more easily readable. The R sigset () function provides reliable signal handling semantics (as when calling sigaction(2) with sa_mask equal to 0). On System V, the R signal () function provides unreliable semantics (as when calling sigaction(2) with sa_mask equal to R SA_RESETHAND | SA_NODEFER ). On BSD, R signal () provides reliable semantics. POSIX.1-2001 leaves these aspects of R signal () unspecified. See signal(2) for further details. In order to wait for a signal, BSD and System V both provided a function named R sigpause (), but this function has a different argument on the two systems. See sigpause(3) for details.

BUGS

In versions of glibc before 2.2, R sigset () did not unblock sig if disp was specified as a value other than R SIG_HOLD . In all versions of glibc up to and including 2.3.5, R sigset () does not correctly return the previous disposition of the signal in two cases. First, if disp is specified as R SIG_HOLD , then a successful R sigset () always returns R SIG_HOLD . Instead, it should return the previous disposition of the signal (unless the signal was blocked, in which case R SIG_HOLD should be returned). Second, if the signal is currently blocked, then the return value of a successful R sigset () should be R SIG_HOLD . Instead, the previous disposition of the signal is returned.

SEE ALSO