The
sigqueue()
system call causes the signal specified by
signo
to be sent with the value specified by
value
to the process specified by
pid.
If
signo
is zero (the null signal), error checking is performed but
no signal is actually sent.
The null signal can be used to check the
validity of PID.
The conditions required for a process to have permission to queue a
signal to another process are the same as for the
kill(2)
system call.
The
sigqueue()
system call queues a signal to a single process specified by the
pid
argument.
The
sigqueue()
system call returns immediately.
If the resources were
available to queue the signal, the signal will be queued and sent to
the receiving process.
If the value of
pid
causes
signo
to be generated for the sending process, and if
signo
is not blocked for the calling thread and if no other thread has
signo
unblocked or is waiting in a
sigwait()
system call for
signo,
either
signo
or at least the pending, unblocked signal will be delivered to the
calling thread before
sigqueue()
returns.
Should any multiple pending signals in the range
SIGRTMIN
to
SIGRTMAX
be selected for delivery, it is the lowest numbered
one.
The selection order between realtime and non-realtime signals, or
between multiple pending non-realtime signals, is unspecified.
As a
FreeBSD
extension, the value of
signo
can be or-ed with the following flags:
| __SIGQUEUE_TID
|
| |
The
pid
parameter is the thread identifier of a thread in the current process,
and the specified signal is queued into the specified thread' queue.
|