Previous: Using a Separate Signal Stack, Up: Signal Handling [Contents][Index]
This section describes alternative signal handling functions derived from BSD Unix. These facilities were an advance, in their time; today, they are mostly obsolete, and supported mainly for compatibility with BSD Unix.
There are many similarities between the BSD and POSIX signal handling
facilities, because the POSIX facilities were inspired by the BSD
facilities. Besides having different names for all the functions to
avoid conflicts, the main difference between the two is that BSD Unix
represents signal masks as an int
bit mask, rather than as a
sigset_t
object.
The BSD facilities are declared in signal.h.
Preliminary: | MT-Unsafe const:sigintr | AS-Unsafe | AC-Unsafe corrupt | See POSIX Safety Concepts.
This function specifies which approach to use when certain primitives
are interrupted by handling signal signum. If failflag is
false, signal signum restarts primitives. If failflag is
true, handling signum causes these primitives to fail with error
code EINTR
. See Primitives Interrupted by Signals.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
This macro returns a signal mask that has the bit for signal signum
set. You can bitwise-OR the results of several calls to sigmask
together to specify more than one signal. For example,
(sigmask (SIGTSTP) | sigmask (SIGSTOP) | sigmask (SIGTTIN) | sigmask (SIGTTOU))
specifies a mask that includes all the job-control stop signals.
Preliminary: | MT-Safe | AS-Unsafe lock/hurd | AC-Unsafe lock/hurd | See POSIX Safety Concepts.
This function is equivalent to sigprocmask
(see Process Signal Mask) with a how argument of SIG_BLOCK
: it adds the
signals specified by mask to the calling process’s set of blocked
signals. The return value is the previous set of blocked signals.
Preliminary: | MT-Safe | AS-Unsafe lock/hurd | AC-Unsafe lock/hurd | See POSIX Safety Concepts.
This function is equivalent to sigprocmask
(see Process Signal Mask) with a how argument of SIG_SETMASK
: it sets
the calling process’s signal mask to mask. The return value is
the previous set of blocked signals.
Preliminary: | MT-Unsafe race:sigprocmask/!bsd!linux | AS-Unsafe lock/hurd | AC-Unsafe lock/hurd | See POSIX Safety Concepts.
This function is the equivalent of sigsuspend
(see Waiting for a Signal): it sets the calling process’s signal mask to mask,
and waits for a signal to arrive. On return the previous set of blocked
signals is restored.
Previous: Using a Separate Signal Stack, Up: Signal Handling [Contents][Index]