siginfo(5) siginfo(5)
siginfo - signal generation information
#include <siginfo.h>
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:
Page 1
siginfo(5) siginfo(5)
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
Page 2
siginfo(5) siginfo(5)
_________________________________________________________________
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
kill(2), sigaction(2), sigqueue(2), sigsend(2), waitid(2), signal(5)
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.
PPPPaaaaggggeeee 3333 [ Back ]
|