The signal specified by signo shall be sent with the value specified by value to the
process specified by pid, when the sigqueue( ) function is called.
Error checking is performed but no signal is actually sent, if signo is zero (the null signal).
Using the null signal can be used to check the the validity of pid.
For a process to have permission to queue a signal to another process
the conditions required are the same as for the kill( ) function.
The signal shall be queued and sent to the receiving process, if SA_SIGINFO is set for signo and
if the resources were available to queue the signal.
signo shall be sent at least once to the receiving process, if SA_SIGINFO is not set for signo;
Either signo or at least the pending, unblocked signal shall be delivered to the calling thread before
the sigqueue( ) function returns, 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( ) function for signo.
The lowest numbered signal shall be selected for delivery, if there are any multiple pending signals in the
range SIGRTMIN to SIGRTMAX.
The specified signal shall have been queued, and the sigqueue( ) function shall return a value of zero,
upon successful completion.
sigqueue() shall return a value of -1 and set errno to [EAGAIN] if no resources are available
to queue the signal. In other words, the process has already queued {SIGQUEUE_MAX} signals
that are still pending at the receiver(s), or a system-wide resource limit has been exceeded.
sigqueue() shall return a value of -1 and set errno to [EINVAL] if the value of the signo
argument is an invalid or unsupported signal number.
sigqueue() shall return a value of -1 and set errno to [EPERM] if the process does not have the
appropriate privilege to send the signal to the receiving process.
sigqueue() shall return a value of -1 and set errno to [ESRCH] if the process pid does not exist.