siginfo includes the following members:
int si_signo;
int si_errno;
int si_code;
si_signo
contains the signal number generated by the system.
If
si_errno
is non-zero, then it contains a system specific error number associated
with this signal.
This number is defined in
errno(2).
If
si_code
is less than or equal to zero, the signal was generated by a user process
or a user requested service:
pid_t si_pid;
uid_t si_uid;
The
si_pid
field contains the pid of the sending process and the
si_uid
field contains the user id of the sending process.
sigval_t si_value;
The
si_value
field contains the value set via
timer_create(2).
int si_fd;
long si_band;
The
si_fd
argument contains the file descriptor number on which the operation was
completed and the
si_band
field contains the side and priority of the operation.
If the operation was a normal read,
si_band
will contain
POLLIN
|
POLLRDNORM
;
on an out-of-band read it will contain
POLLPRI
|
POLLRDBAND
;
on a normal write it will contain
POLLOUT
|
POLLWRNORM
;
on an out-of-band write it will contain
POLLPRI
|
POLLWRBAND
.
If
si_code
is positive, then it contains a signal specific reason
why the signal was generated:
For
SIGILL
, SIGFPE
,
and
SIGTRAP
the
siginfo
structure contains the following additional members:
void *si_addr;
int si_trap;
si_addr
contains the address of the faulting instruction and
si_trap
contains a hardware specific reason.
For
SIGBUS
and
SIGSEGV
the
siginfo
structure contains the following additional members:
void *si_addr;
int si_trap;
si_addr
contains the address of the faulting data and
si_trap
contains a hardware specific reason.
For
SIGPOLL
the
siginfo
structure contains the following additional members:
int si_fd;
long si_band;
The
si_fd
argument contains the file descriptor number on which the operation was
completed and the
si_band
field contains the side and priority of the operation as described above.
Finally, for
SIGCHLD
the
siginfo
structure contains the following additional members:
pid_t si_pid;
uid_t si_uid;
int si_status;
clock_t si_utime;
clock_t si_stime;
The
si_pid
field contains the pid of the process who's status changed, the
si_uid
field contains the user id of the that process, the
si_status
field contains a status code described in
waitpid(2),
and the
si_utime
and
si_stime
fields contain the user and system process accounting time.
AT&T
System V.4 UNIX
.