If a process is catching a signal,
it may request information that tells
why the system generated that signal [see
sigaction(2)].
If a process is monitoring its children, it may receive information
that tells why a child changed state [see
waitid(2)].
In either case, the system returns the information in
a structure of type siginfo_t, which includes the following
information:
int si_signo /* signal number */
int si_errno /* error number */
int si_code /* signal code */
si_signo
contains the system-generated signal number.
(For the
waitid(2)
function, si_signo is always SIGCHLD.)
If si_errno is non-zero, it contains an error number
associated with this signal, as defined in errno.h.
si_code
contains a code identifying the cause of the signal.
If the value of
si_code
is less than or equal to 0, then the signal was generated by a user
process [see
kill(2)
and
sigsend(2)]
and the siginfo structure contains the following additional information:
pid_t si_pid /* sending process ID */
uid_t si_uid /* sending user ID */
Otherwise,
si_code
contains a signal-specific reason why the signal was generated, as follows:
Signal
Code
Reason
SIGILL
ILL_ILLOPC
illegal opcode
ILL_ILLOPN
illegal operand
ILL_ILLADR
illegal addressing mode
ILL_ILLTRP
illegal trap
ILL_PRVOPC
privileged opcode
ILL_PRVREG
privileged register
ILL_COPROC
co-processor error
ILL_BADSTK
internal stack error
SIGFPE
FPE_INTDIV
integer divide by zero
FPE_INTOVF
integer overflow
FPE_FLTDIV
floating point divide by zero
FPE_FLTOVF
floating point overflow
FPE_FLTUND
floating point underflow
FPE_FLTRES
floating point inexact result
FPE_FLTINV
invalid floating point operation
FPE_FLTSUB
subscript out of range
SIGSEGV
SEGV_MAPERR
address not mapped to object
SEGV_ACCERR
invalid permissions for mapped object
SIGBUS
BUS_ADRALN
invalid address alignment
BUS_ADRERR
non-existent physical address
BUS_OBJERR
object specific hardware error
SIGTRAP
TRAP_BRKPT
process breakpoint
TRAP_TRACE
process trace trap
SIGCHLD
CLD_EXITED
child has exited
CLD_KILLED
child was killed
CLD_DUMPED
child terminated abnormally
CLD_TRAPPED
traced child has trapped
CLD_STOPPED
child has stopped
CLD_CONTINUED
stopped child had continued
SIGPOLL
POLL_IN
data input available
POLL_OUT
output buffers available
POLL_MSG
input message available
POLL_ERR
I/O error
POLL_PRI
high priority input available
POLL_HUP
device disconnected
In addition, the following signal-dependent information is available
for kernel-generated signals: