sigqueue(3)sigqueue(3)NAMEsigqueue - Queues a signal and data to a running process
SYNOPSIS
#include <signal.h>
int sigqueue ( pid_t pid, int signo, const union sigval value);
LIBRARY
Realtime Library (librt.so, librt.a)
PARAMETERS
Specifies the ID of the target process. Specifies the signal to be
queued. If the signo parameter is 0 (the null signal), error checking
is performed but no signal is sent. This can be used to check the
validity of the pid parameter. Specifies the application-defined value
to be queued to the receiving process.
DESCRIPTION
The sigqueue function causes the signal specified by signo to be sent
with the value specified by value to the process specified by pid.
The conditions required for a process to have permission to queue a
signal to another process are the same as for the kill function.
If the call is successful, the signal is queued to the specified
process. If the process has the SA_SIGINFO option enabled for the
queued signal, the specified value is delivered to its signal handler
as the si_value field of the siginfo parameter. Nonprivileged callers
are restricted in the number of signals they can have actively queued.
This per-process quota value can be returned with
sysconf(_SC_SIGQUEUE_MAX).
RETURN VALUES
Upon successful completion, the sigqueue function returns a value of 0
(zero). Otherwise, a value of -1 is returned and errno is set to indi‐
cate the error.
ERRORS
If sigqueue fails, no signal is sent, and errno is set to one of the
following values: No resources are available to queue the signal. The
process has already queued {SIGQUEUE_MAX} signals that are still pend‐
ing at the receiver(s), or a system-wide resource limit has been
exceeded. The signo parameter is not a valid signal number. The signo
parameter is SIGKILL, SIGSTOP, SIGTSTP, or SIGCONT, and the pid parame‐
ter is 1 (process 1 -- init). No process can be found corresponding to
that specified by the pid parameter. The real or saved user ID does
not match the real or effective user ID of the receiving process, the
calling process does not have appropriate privilege, or the process is
not sending a SIGCONT signal to one of its session's processes.
SEE ALSO
Headers: siginfo(5)
Functions: kill(2), sigaction(2), sysconf(3)
Guide to Realtime Programming
sigqueue(3)