SIGPAUSE(3) Linux Programmer's Manual SIGPAUSE(3)
sigpause - atomically release blocked signals and wait for interrupt
int sigpause(int sigmask); /* BSD (but see NOTES) */
int sigpause(int sig); /* System V / UNIX 95 */
Don't use this function. Use sigsuspend(2) instead.
The function sigpause() is designed to wait for some signal. It changes the process's signal mask (set of blocked signals), and then waits for a signal to arrive. Upon arrival of a signal, the original signal mask is restored.
If sigpause() returns, it was interrupted by a signal and the return value is -1 with errno set to EINTR.
For an explanation of the terms used in this section, see attributes(7).
+-----------+---------------+---------+ |Interface | Attribute | Value | +-----------+---------------+---------+ |sigpause() | Thread safety | MT-Safe | +-----------+---------------+---------+
The System V version of sigpause() is standardized in POSIX.1-2001. It is also specified in POSIX.1-2008, where it is marked obsolete.
History The classical BSD version of this function appeared in 4.2BSD. It sets the process's signal mask to sigmask. UNIX 95 standardized the incom- patible System V version of this function, which removes only the spec- ified signal sig from the process's signal mask. The unfortunate situ- ation with two incompatible functions with the same name was solved by the sigsuspend(2) function, that takes a sigset_t * argument (instead of an int).
Linux notes On Linux, this routine is a system call only on the Sparc (sparc64) architecture.
Glibc uses the BSD version if the _BSD_SOURCE feature test macro is defined and none of _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, _GNU_SOURCE, or _SVID_SOURCE is defined. Otherwise, the System V ver- sion is used, and feature test macros must be defined as follows to obtain the declaration:
- Since glibc 2.26: _XOPEN_SOURCE >= 500
- Glibc 2.25 and earlier: _XOPEN_SOURCE
Since glibc 2.19, only the System V version is exposed by <signal.h>; applications that formerly used the BSD sigpause() should be amended to use sigsuspend(2).
kill(2), sigaction(2), sigprocmask(2), sigsuspend(2), sigblock(3), sigvec(3), feature_test_macros(7)
This page is part of release 4.16 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
Linux 2017-09-15 SIGPAUSE(3)