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
|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.
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).
On Linux, this routine is a system call only on the Sparc (sparc64)
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 _XOPEN_SOURCE must be defined to obtain the declara-
tion). Since glibc 2.19, only the System V version is exposed by <sig-
nal.h>; applications that formerly used the BSD sigpause() should be
amended to use sigsuspend(2).
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.