Previous: , Up: Signal Handling   [Contents][Index]


24.10 BSD Signal Handling

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.

Function: int siginterrupt (int signum, int failflag)

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.

This function has been replaced by the SA_RESTART flag of the sigaction function. See Advanced Signal Handling.

Macro: int sigmask (int signum)

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.

This macro has been replaced by the sigset_t type and the associated signal set manipulation functions. See Signal Sets.

Function: int sigblock (int mask)

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.

Function: int sigsetmask (int mask)

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.

Function: int sigpause (int mask)

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]