temporarily changes the blocked signal mask to the set to which
and then waits for a signal to arrive;
on return the previous set of masked signals is restored.
The signal mask set
is usually empty to indicate that all
signals are to be unblocked for the duration of the call.
In normal usage, a signal is blocked using
to begin a critical section, variables modified on the occurrence
of the signal are examined to determine that there is no work
to be done, and the process pauses awaiting work by using
with the previous mask returned by
function always terminates by being interrupted, returning \-1 with