#include <signal.h> int
sigqueue (pid_t pid int signo const union sigval value);
DESCRIPTION
The
sigqueue ();
system call causes the signal specified by
Fa signo
to be sent with the value specified by
Fa value
to the process specified by
Fa pid .
If
Fa 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
Fa 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
Fa pid
causes
Fa signo
to be generated for the sending process, and if
Fa signo
is not blocked for the calling thread and if no other thread has
Fa signo
unblocked or is waiting in a
sigwait ();
system call for
Fa signo ,
either
Fa 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.
RETURN VALUES
Rv -std
ERRORS
The
sigqueue ();
system call
will fail if:
Bq Er EAGAIN
No resources are available to queue the signal.
The process has already
queued
Br q Dv SIGQUEUE_MAX
signals that are still pending at the receiver(s),
or a system-wide resource limit has been exceeded.
Bq Er EINVAL
The value of the
Fa signo
argument is an invalid or unsupported signal number.
Bq Er EEPERM
The process does not have the appropriate privilege to send the signal
to the receiving process.