diff --git a/man2/sigsuspend.2 b/man2/sigsuspend.2 index d642d26cf..0b64eb0cd 100644 --- a/man2/sigsuspend.2 +++ b/man2/sigsuspend.2 @@ -1 +1,99 @@ -.so man2/sigaction.2 +.\" Copyright (c) 2005 Michael Kerrisk +.\" based on earlier work by faith@cs.unc.edu and +.\" Mike Battersby +.\" +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one. +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" +.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2 +.\" +.TH SIGSUSPEND 2 2005-09-15 "Linux 2.6.13" "Linux Programmer's Manual" +.SH NAME +sigsuspend \- wait for a signal +.SH SYNOPSIS +.B #include +.sp +.BI "int sigsuspend(const sigset_t *" mask ); +.SH DESCRIPTION +.BR sigsuspend () +temporarily replaces the signal mask of the calling process with the +mask given by +.I mask +and then suspends the process until delivery of a signal whose +action is to invoke a signal handler or to terminate a process. + +If the signal terminates the process, then +.BR sigsuspend () +does not return. +If the signal is caught, then +.BR sigsuspend () +returns after the signal handler returns, +and the signal mask is restored to the state before the call to +.BR sigsuspend (). + +It is not possible to block SIGKILL or SIGSTOP; +specifying these signals in +.IR mask , +has no effect on the process's signal mask. +.SH "RETURN VALUE" +.BR sigsuspend () +always returns \-1, normally with the error +.BR EINTR . +.SH ERRORS +.TP +.B EFAULT +.I mask +points to memory which is not a valid part of the process address space. +.TP +.B EINTR +The call was interrupted by a signal. +.SH NOTES +.PP +Normally, +.BR sigsuspend () +is used in conjunction with +.BR sigprocmask () +in order to prevent delivery of a signal during the execution of a +critical code section. +The caller first blocks the signals with +.BR sigprocmask (). +When the critical code has completed, the caller then waits for the +signals by calling +.BR sigsuspend () +with the signal mask that was returned by +.BR sigprocmask() +(in the +.IR oldset +argument). +.PP +See +.BR sigsetops (3) +for details on manipulating signal sets. +.SH "CONFORMING TO" +POSIX.1-2001. +.SH "SEE ALSO" +.BR kill (2), +.BR pause (2), +.BR sigaction (2), +.BR signal (2), +.BR sigprocmask (2), +.BR sigwaitinfo (2), +.BR sigsetops (3), +.BR signal (7)