sigwait, sigwaitinfo, sigtimedwait - Suspend a calling
thread until a signal arrives
#include <signal.h>
int sigwait(
const sigset_t *set,
int *signal ); int sigwaitinfo(
const sigset_t *set,
siginfo_t *info ); int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout );
Threads Library (libpthread.so): sigwait()
Realtime Library (librt.a, librt.so): sigwaitinfo(), sigtimedwait()
Specifies the set of signals to wait for. Returns the
signal number of the selected signal. (See the DESCRIPTION
section for information about the selected signal.) Specifies
a pointer to a siginfo structure that is receiving
data describing the signal, including any applicationdefined
data specified when the signal was posted. Specifies
a timeout for the wait. If timeout is null, the argument
is ignored.
The sigwait functions suspend the calling thread until at
least one of the signals in the set parameter is in the
caller's set of pending signals. When this happens, one of
those signals is automatically selected and removed from
the set of pending signals. The signal number identifying
that signal is then returned.
For the sigwait() function, the signal number is stored in
the signal argument. For the sigwaitinfo() and sigtimedwait()
functions, if the info argument is specified, the
selected signal number is stored in the si_signo member of
siginfo structure, and the cause of the signal is stored
in the si_code member. If any value is queued to the
selected signal, the first queued value is dequeued and
stored in the si_value member of info. If no value is
queued, the content of the si_value member is undefined.
For sigtimedwait(), if the timeout parameter is specified,
the function waits for the specified time interval. If
the timespec structure specified contains a timeout value
of zero (0), and if none of the signals specified by set
are pending, then sigtimedwait() returns immediately with
an error.
The effect is unspecified if any signals in the set parameter
are not blocked when the sigwait functions are
called.
The set parameter is created using the set manipulation
functions sigemptyset(), sigfillset(), sigaddset(), and
sigdelset().
If, while the sigwait functions are waiting, a signal
occurs that is eligible for delivery (that is, not blocked
by the signal mask), that signal is handled asynchronously
and the wait is interrupted.
Upon successful completion, the sigwait() function returns
0 (zero). The other functions return the number of the
selected signal.
On failure, sigwait() returns the errno value for the
failure. The other functions return -1 and set errno to
indicate the error.
If the sigwait functions fail, errno is set to one of the
following values: The value of the set parameter contains
an invalid or unsupported signal number. The timeout
argument specified a tv_nsec value that is less than 0 or
greater than or equal to 1,000,000,000. The wait was
interrupted by an unblocked, caught signal. No signal
specified by set was delivered within the specified timeout
period.
Headers: siginfo(5)
Functions: sigaction(2), sigpending(2), sigsuspend(2)
Routines: sigaddset(3), sigdelset(3), sigemptyset(3), sigfillset(3)
sigwait(3)
[ Back ] |