diff options
Diffstat (limited to 'man-pages-posix-2013/man3p/sigsuspend.3p')
-rw-r--r-- | man-pages-posix-2013/man3p/sigsuspend.3p | 128 |
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 . |