#include <siginfo.h>
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 |
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:
Signal | Field | Value |
---|---|---|
SIGILL
SIGFPE | caddr_t si_addr | address of faulting instruction |
SIGSEGV
SIGBUS | caddr_t si_addr | address of faulting memory reference |
SIGCHLD |
pid_t si_pid
int si_status |
child process ID
exit value or signal |
SIGPOLL | long si_band | band event for POLL_IN, POLL_OUT, or POLL_MSG |
Signal Field Value ---------------------------------------------------------------- SIGILL caddr_t si_addr address of faulting instruction SIGFPE SIGSEGV caddr_t si_addr address of faulting memory reference SIGBUS SIGCHLD pid_t si_pid child process ID int si_status exit value or signal SIGPOLL long si_band band event for POLL_IN, POLL_OUT, or POLL_MSG