install a signal mask and suspend process until signal
int sigsuspend(const sigset_t *set);
sigsuspend replaces the process's signal mask with
the set of signals pointed to by the argument set and then
suspends the process until delivery of a signal whose action is
either to execute a signal catching function or to terminate the process.
If the action is to terminate the process, sigsuspend
does not return.
If the action is to execute a signal catching
function, sigsuspend returns after
the signal catching function returns.
the signal mask is restored to the set that existed before the
call to sigsuspend.
It is not possible to block those signals that cannot be ignored
this restriction is silently imposed by the system.
Because sigsuspend suspends process execution
indefinitely, there is no successful return value.
On failure, sigsuspend returns -1 and sets errno to identify the error.
In the following conditions, sigsuspend fails and sets errno to:
A signal is caught by the calling process and control is returned from
the signal catching function.
The set argument points outside the process's
allocated address space.
Considerations for threads programming
In multithreaded programs,
signal masks are defined per thread.
for further details.
While one thread is blocked, siblings might still be executing.
Considerations for lightweight processes
Internally, there is one signal mask is per LWP.
The Threads Library has a wrapper function for this
system call to give every thread a signal mask.
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004