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_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
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