summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2013/man3p/sigsuspend.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2013/man3p/sigsuspend.3p')
-rw-r--r--man-pages-posix-2013/man3p/sigsuspend.3p128
1 files changed, 128 insertions, 0 deletions
diff --git a/man-pages-posix-2013/man3p/sigsuspend.3p b/man-pages-posix-2013/man3p/sigsuspend.3p
new file mode 100644
index 0000000..22efe90
--- /dev/null
+++ b/man-pages-posix-2013/man3p/sigsuspend.3p
@@ -0,0 +1,128 @@
+'\" et
+.TH SIGSUSPEND "3P" 2013 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+
+.SH NAME
+sigsuspend
+\(em wait for a signal
+.SH SYNOPSIS
+.LP
+.nf
+#include <signal.h>
+.P
+int sigsuspend(const sigset_t *\fIsigmask\fP);
+.fi
+.SH DESCRIPTION
+The
+\fIsigsuspend\fR()
+function shall replace the current signal mask of the calling thread
+with the set of signals pointed to by
+.IR sigmask
+and then suspend the thread until delivery of a signal whose action is
+either to execute a signal-catching function or to terminate the
+process. This shall not cause any other signals that may have been
+pending on the process to become pending on the thread.
+.P
+If the action is to terminate the process then
+\fIsigsuspend\fR()
+shall never return. If the action is to execute a signal-catching
+function, then
+\fIsigsuspend\fR()
+shall return after the signal-catching function returns, with the
+signal mask restored to the set that existed prior to the
+\fIsigsuspend\fR()
+call.
+.P
+It is not possible to block signals that cannot be ignored. This is
+enforced by the system without causing an error to be indicated.
+.SH "RETURN VALUE"
+Since
+\fIsigsuspend\fR()
+suspends thread execution indefinitely, there is no successful
+completion return value. If a return occurs, \(mi1 shall be returned and
+.IR errno
+set to indicate the error.
+.SH ERRORS
+The
+\fIsigsuspend\fR()
+function shall fail if:
+.TP
+.BR EINTR
+A signal is caught by the calling process and control is returned from
+the signal-catching function.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+None.
+.SH "APPLICATION USAGE"
+Normally, at the beginning of a critical code section, a specified set
+of signals is blocked using the
+\fIsigprocmask\fR()
+function. When the thread has completed the critical section and
+needs to wait for the previously blocked signal(s), it pauses by
+calling
+\fIsigsuspend\fR()
+with the mask that was returned by the
+\fIsigprocmask\fR()
+call.
+.SH RATIONALE
+Code which wants to avoid the ambiguity of the signal mask for thread
+cancellation handlers can install an additional cancellation handler
+which resets the signal mask to the expected value.
+.sp
+.RS 4
+.nf
+\fB
+void cleanup(void *arg)
+{
+ sigset_t *ss = (sigset_t *) arg;
+ pthread_sigmask(SIG_SETMASK, ss, NULL);
+}
+.P
+int call_sigsuspend(const sigset_t *mask)
+{
+ sigset_t oldmask;
+ int result;
+ pthread_sigmask(SIG_SETMASK, NULL, &oldmask);
+ pthread_cleanup_push(cleanup, &oldmask);
+ result = sigsuspend(sigmask);
+ pthread_cleanup_pop(0);
+ return result;
+}
+.fi \fR
+.P
+.RE
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "Section 2.4" ", " "Signal Concepts",
+.IR "\fIpause\fR\^(\|)",
+.IR "\fIsigaction\fR\^(\|)",
+.IR "\fIsigaddset\fR\^(\|)",
+.IR "\fIsigdelset\fR\^(\|)",
+.IR "\fIsigemptyset\fR\^(\|)",
+.IR "\fIsigfillset\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2008,
+.IR "\fB<signal.h>\fP"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, Copyright (C) 2013 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+(This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In the
+event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.unix.org/online.html .
+
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .