int sigwaitinfo(const sigset_t *
set
, siginfo_t *
info
);
int sigtimedwait(const sigset_t *
set
, siginfo_t *
info
,
const struct timespec *
timeout
);
DESCRIPTION
The function
sigwaitinfo()
selects the pending signal from the set specified by
set
.
Should any of multiple pending signals in the range
SIGRTMIN to SIGRTMAX be selected,
it will be the lowest numbered one.
The selection order between realtime and non-realtime signals,
or between multiple pending non-realtime signals, is unspecified.
If no signal in
is pending at the time of the call,
the calling thread is suspended until one or more signals in
become pending or until it is interrupted by an unblocked, caught signal.
The function
sigwaitinfo()
behaves the same as the
sigwait()
function if the
argument is NULL.
If the
argument is non-NULL, the
sigwaitinfo()
function behaves the same as
sigwait,
()
except that the selected signal number is stored in the
si_signo
member, and the cause of the signal is stored in the
si_code
member.
If any value is queued to the selected
signal, the first such queued value is
dequeued and, if the
argument is non-NULL, the value is stored in the
si_value
member of
info
.
The system resource used to queue the signal will be released
and made available to queue other signals.
If no value is queued, the
content of the
si_value
member is undefined.
If no further signals
are queued for the selected signal,
the pending indication for that signal will be reset.
The function
sigtimedwait()
behaves the same as
sigwaitinfo()
except that if none of the signals specified by
are pending,
sigtimedwait()
waits for the time interval specified in the
timespec
structure referenced by
timeout
.
If the
timespec
structure pointed to by
timeout
is zero-valued and if none of the signals specified by
are pending, then
sigtimedwait()
returns immediately with an error.
timeout
is the NULL pointer, the behaviour is unspecified.
RETURN VALUE
Upon successful completion (that is, one of
the signals specified by
is pending or is generated)
sigwaitinfo()
sigtimedwait()
will return the selected signal number.
Otherwise, the function returns a value of -1 and sets
errno
to indicate the error.
ERRORS
sigwaitinfo()
sigtimedwait()
functions will fail if:
[ENOSYS]
The functions
sigwaitinfo()
sigtimedwait()
are not supported by this implementation.
sigtimedwait()
function will also fail if:
[EAGAIN]
No signal specified by
was generated within the specified timeout period.
sigwaitinfo()
sigtimedwait()
functions may fail if:
[EINTR]
The wait was interrupted by an unblocked, caught signal.
It will be documented in system documentation whether this error will
cause these functions to fail.
<time.h>
.
DERIVATION
Derived from the POSIX Realtime Extension (1003.1b-1993/1003.1i-1995) and the POSIX Threads Extension (1003.1c-1995)