siginfo(5) siginfo(5) NAME siginfo - signal generation information SYNOPSIS #include <siginfo.h> DESCRIPTION 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 either by a user process or on behalf of a user initiated service. In this case si_code defines which service initiated the request and determines what (if any) additional information is included in the siginfo structure. The following are the possible user initiated si_code values: SI_USER The signal was generated via kill(2) or sigsend(2). The siginfo structure contains the following additional information: pid_t si_pid /* sending process ID */ uid_t si_uid /* sending user ID */ SI_QUEUE The signal was generated via sigqueue(3). The siginfo structure contains the following additional information: pid_t si_pid /* sending process ID */ uid_t si_uid /* sending user ID */ union sigval si_value; /* value sent via sigqueue */ 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 coprocessor 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 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 SEE ALSO kill(2), sigaction(2), sigqueue(2), sigsend(2), waitid(2), signal(5) NOTES For SIGCHLD signals, if si_code is equal to CLD_EXITED, then si_status is equal to the exit value of the process; otherwise, it is equal to the signal that caused the process to change state. For some implementations, the exact value of si_addr may not be available; in that case, si_addr is guaranteed to be on the same page as the faulting instruction or memory reference. Page 3