OpenBSD manual page server

Manual Page Search Parameters

SIGBLOCK(3) Library Functions Manual SIGBLOCK(3)

sigblock, sigmaskblock signals

#include <signal.h>

int
sigblock(int mask);

int
sigmask(int signum);

This interface is made obsolete by sigprocmask(2).

() 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 () 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.

The previous set of masked signals is returned.

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);

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

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.

December 13, 2022 OpenBSD-current