int si_fd; /* File descriptor */ } 开头的三个字段si_signo,si_errno 和 si_code为所有信号使用(Linux中si_signo不被使用),结构的剩下部分可看作联合体,所以应该只读取对给定信号有意义的字段。POSIX.1b信号和SIGCHLD填写si_pid 和 si_uid两个字段。SIGCHLD信号同时填写si_status, si_utime 和 si_sti...
int si_code; // Signal code int si_trapno; // Trap number that caused hardware-generated signal (unused on most architectures) pid_t si_pid; // Sending process ID uid_t si_uid; // Real user ID of sending process int si_status; // Exit value or signal clock_t si_utime; // U...
si_code:信号代码 si_pid:信号来自于哪一个进程(哪个进程发送来的) si_uid:信号来自于哪个用户(发送来的进程的用户) si_value(重点):传递的信息。应用程序在传递信号时,可以在si_value.sival_int传递一个整型或者si_value.sival_ptr传递一块内存(下面会有一个案例) 若信号...
si_pid 如果si_code的值小于或等于零,那么此成员将指示此信号的发送方的进程标识。 否则,此成员无意义。 Si_uid 如果si_code的值小于或等于零,那么此成员将指示此信号的发送方的实际用户标识。 否则,此成员无意义。 si_value 如果si_code是 SI_ASYNCIO ,那么si_value包含应用程序指定的值。 否则,将取消定义...
int si_errno; /* errno值,对所有信号有意义*/ int si_code; /* 信号产生的原因,对所有信号有意义*/ int si_trapno; /* Trap number that caused hardware-generated signal (unused on most architectures) */ pid_t si_pid; /* 发送信号的进程ID,对kill(2),实时信号以及SIGCHLD有意义 */ ...
The si_errno member may contain implementation-dependent additional error information; if non-zero, it contains an error number identifying the condition that caused the signal to be generated. The si_code member contains a code identifying the cause of the signal. If the value of si_code is...
int si_status; /* exit value or signal number */ long si_band; /* band number for SIGPOLL */ /* possibly other fields also */ }; 各种信号的si_code值(包括上面的相关数据结构和标志选项),可通过man sigaction命令进行查看。 若信号是SIGCHLD,则将设置si_pid、si_status和si_uid字段。
siginfo_t { int si_signo; /* Signal number */ int si_errno; /* An errno value */ int si_code; /* Signal code */ int si_trapno; /* Trap number that caused hardware-generated signal (unused on most architectures) */ pid_t si_pid; /* Sending process ID */ uid_t si_uid; ...
si_pid 字段是子进程ID; si_uid 是子进程的真实用户 ID。 si_status 字段包含子进程的退出状态(如果 si_code 是 CLD_EXITED),或导致进程改变状态的信号编号。 si_utime 和 si_stime 包含子进程使用的用户和系统 CPU 时间; 这些字段不包括等待子进程使用的时间(与 getrusage(2) 和 times(2) 不同)。在...
siginfo_t{int si_signo;/* 信号值,对所有信号有意义*/int si_errno;/* errno值,对所有信号有意义*/int si_code;/* 信号产生的原因,对所有信号有意义*/int si_trapno;/* Trap number that caused hardware-generated signal (unused on most architectures) */pid_t si_pid;/* 发送信号的进程ID,对ki...