SIGBLOCK(3)

NAME
sigblock, sigmask - block signals

SYNOPSIS
#include <signal.h>
int
sigblock(int mask);
int
sigmask(int signum);

DESCRIPTION
This interface is made obsolete by sigprocmask(2).

sigblock() adds the signals specified in mask to the set of signals currently being blocked from delivery. Signals are blocked if the corresponding bit in mask is a 1; the macro sigmask() is provided to construct the mask for a given signum.

It is not possible to block SIGKILL or SIGSTOP; this restriction is silently imposed by the system.

RETURN VALUES
The previous set of masked signals is returned.

EXAMPLES
The following example utilizing sigblock():

    int omask;
    omask = sigblock(sigmask(SIGINT) | sigmask(SIGHUP));

Becomes:

    sigset_t set, oset;
    sigemptyset(&set);
    sigaddset(&set, SIGINT);
    sigaddset(&set, SIGHUP);
    sigprocmask(SIG_BLOCK, &set, &oset);

Another use of sigblock() is to get the current set of masked signals without changing what is actually blocked. Instead of:

    int set;
    set = sigblock(0);

Use the following:

    sigset_t set;
    sigprocmask(SIG_BLOCK, NULL, &set);

SEE ALSO
kill(2), sigaction(2), sigprocmask(2), sigaddset(3), sigsetmask(3)

HISTORY
A sigblock() system call first appeared in 4.2BSD. In 4.3BSD Reno, it was reimplemented as a wrapper around sigprocmask(2). The old system call was kept for compatibility until OpenBSD 4.9.