int
sigtimedwait(
const sigset_t * restrict set
, siginfo_t * restrict info
, const struct timespec * restrict timeout
)
int
sigwaitinfo(
const sigset_t * restrict set
, siginfo_t * restrict info
)
int
sigwait(
const sigset_t * restrict set
, int * restrict sig
)
)
and
sigwait(
)
return the first pending signal from the set specified by
set
.
Should multiple signals from
set
be pending, the lowest numbered one is returned.
The selection order between realtime and non-realtime signals is unspecified.
If there is no signal from
set
pending at the time of the call, the calling thread
is suspended until one of the specified signals is generated.
sigtimedwait()
is exactly equal to
sigwaitinfo(
),
except
timeout
specifies the maximum time interval for which the calling thread will
be suspended.
If
timeout
is zero (tv_sec == tv_nsec == 0),
sigtimedwait()
only checks the currently pending signals and returns immediately.
If
NULL
is used for
timeout
,
sigtimedwait()
behaves exactly like
sigwaitinfo(
)
in all regards.
If several threads are waiting for a given signal, exactly one of them returns from the signal wait when the signal is generated.
Behaviour of these functions is unspecified if any of the signals in
set
are unblocked at the time these functions are called.
info
is updated with signal information, and the function returns 0.
Otherwise, -1 is returned and the global variable
errno
indicates the error.
)
and
sigwait(
)
always succeed.
sigtimedwait()
will fail and the
info
pointer will remain unchanged if:
EAGAIN
]
set
was generated in the specified
timeout
.
sigtimedwait()
may also fail if:
EINVAL
]
timeout
was invalid.
This error is only checked if no signal from
set
is pending and it would be necessary to wait.
),
sigwaitinfo(
),
and
sigwait(
)
conform to
IEEE Std 1003.1-2001 (``POSIX.1'') .
),
sigwaitinfo(
),
and
sigwait(
)
functions appeared in
NetBSD2.0.