summaryrefslogtreecommitdiffstats
path: root/man3/sigpause.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/sigpause.3')
-rw-r--r--man3/sigpause.3126
1 files changed, 126 insertions, 0 deletions
diff --git a/man3/sigpause.3 b/man3/sigpause.3
new file mode 100644
index 0000000..492d9fa
--- /dev/null
+++ b/man3/sigpause.3
@@ -0,0 +1,126 @@
+'\" t
+.\" Copyright (C) 2004 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH sigpause 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+sigpause \- atomically release blocked signals and wait for interrupt
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <signal.h>
+.PP
+.BI "[[deprecated]] int sigpause(int " sigmask "); /* BSD (but see NOTES) */"
+.PP
+.BI "[[deprecated]] int sigpause(int " sig "); /* POSIX.1 / SysV / UNIX 95 */"
+.fi
+.SH DESCRIPTION
+Don't use this function.
+Use
+.BR sigsuspend (2)
+instead.
+.PP
+The function
+.BR 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.
+.SH RETURN VALUE
+If
+.BR sigpause ()
+returns, it was interrupted by a signal and the return value is \-1
+with
+.I errno
+set to
+.BR EINTR .
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR sigpause ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.\" FIXME: The marking is different from that in the glibc manual,
+.\" marking in glibc manual is more detailed:
+.\"
+.\" sigpause: MT-Unsafe race:sigprocmask/!bsd!linux
+.\"
+.\" glibc manual says /!linux!bsd indicate the preceding marker only applies
+.\" when the underlying kernel is neither Linux nor a BSD kernel.
+.\" So, it is safe in Linux kernel.
+.SH VERSIONS
+On Linux, this routine is a system call only on the Sparc (sparc64)
+architecture.
+.PP
+.\" Libc4 and libc5 know only about the BSD version.
+.\"
+glibc uses the BSD version if the
+.B _BSD_SOURCE
+feature test macro is defined and none of
+.BR _POSIX_SOURCE ,
+.BR _POSIX_C_SOURCE ,
+.BR _XOPEN_SOURCE ,
+.BR _GNU_SOURCE ,
+or
+.B _SVID_SOURCE
+is defined.
+Otherwise, the System V version is used,
+and feature test macros must be defined as follows to obtain the declaration:
+.IP \[bu] 3
+Since glibc 2.26:
+_XOPEN_SOURCE >= 500
+.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
+.IP \[bu]
+glibc 2.25 and earlier: _XOPEN_SOURCE
+.PP
+Since glibc 2.19, only the System V version is exposed by
+.IR <signal.h> ;
+applications that formerly used the BSD
+.BR sigpause ()
+should be amended to use
+.BR sigsuspend (2).
+.\"
+.\" For the BSD version, one usually uses a zero
+.\" .I sigmask
+.\" to indicate that no signals are to be blocked.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+Obsoleted in POSIX.1-2008.
+.PP
+The classical BSD version of this function appeared in 4.2BSD.
+It sets the process's signal mask to
+.IR sigmask .
+UNIX 95 standardized the incompatible System V version of
+this function, which removes only the specified signal
+.I sig
+from the process's signal mask.
+.\" __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG
+The unfortunate situation with two incompatible functions with the
+same name was solved by the
+.BR \%sigsuspend (2)
+function, that takes a
+.I "sigset_t\ *"
+argument (instead of an
+.IR int ).
+.SH SEE ALSO
+.BR kill (2),
+.BR sigaction (2),
+.BR sigprocmask (2),
+.BR sigsuspend (2),
+.BR sigblock (3),
+.BR sigvec (3),
+.BR feature_test_macros (7)