Real-time signals are distinguished by the following:
1. Multiple instances of real-time signals can be queued. By con-
trast, if multiple instances of a standard signal are delivered
while that signal is currently blocked, then only one instance is
2. If the signal is sent using sigqueue(2), an accompanying value
(either an integer or a pointer) can be sent with the signal. If
the receiving process establishes a handler for this signal using
the SA_SIGINFO flag to sigaction(2) then it can obtain this data
via the si_value field of the siginfo_t structure passed as the
second argument to the handler. Furthermore, the si_pid and si_uid
fields of this structure can be used to obtain the PID and real
user ID of the process sending the signal.
3. Real-time signals are delivered in a guaranteed order. Multiple
real-time signals of the same type are delivered in the order they
were sent. If different real-time signals are sent to a process,
they are delivered starting with the lowest-numbered signal.
(I.e., low-numbered signals have highest priority.)
If both standard and real-time signals are pending for a process, POSIX
leaves it unspecified which is delivered first. Linux, like many other
implementations, gives priority to standard signals in this case.