Linux kernel signalfd_siginfo结构中ssi_代码的用途是什么?

Linux kernel signalfd_siginfo结构中ssi_代码的用途是什么?,linux-kernel,Linux Kernel,我正在使用signalfd()监视由我的进程创建的子进程的死亡。如果我用一个信号杀死一个子进程,父进程将在填充了signalfd_siginfo结构的signalfd上获得一个读取事件。它有一个字段ssi_code,设置为子级接收的信号号(例如,如果我向子级发送SIGKILL,则设置为9) 我能永远依靠这种行为吗?支持signalfd的所有Linux内核版本在此字段中的用法是否相同 注意:如果子级调用exit(),则传递到exit的代码将填充在ssi_代码中。signalfd的手册页状态: Th

我正在使用signalfd()监视由我的进程创建的子进程的死亡。如果我用一个信号杀死一个子进程,父进程将在填充了signalfd_siginfo结构的signalfd上获得一个读取事件。它有一个字段ssi_code,设置为子级接收的信号号(例如,如果我向子级发送SIGKILL,则设置为9)

我能永远依靠这种行为吗?支持signalfd的所有Linux内核版本在此字段中的用法是否相同


注意:如果子级调用exit(),则传递到exit的代码将填充在ssi_代码中。

signalfd的手册页状态:

The format of the signalfd_siginfo structure(s) returned by read(2)s from a signalfd file descriptor is as follows:

           struct signalfd_siginfo {
               uint32_t ssi_signo;   /* Signal number */
               int32_t  ssi_errno;   /* Error number (unused) */
               int32_t  ssi_code;    /* Signal code */
               uint32_t ssi_pid;     /* PID of sender */
               uint32_t ssi_uid;     /* Real UID of sender */
               int32_t  ssi_fd;      /* File descriptor (SIGIO) */
               uint32_t ssi_tid;     /* Kernel timer ID (POSIX timers)
               uint32_t ssi_band;    /* Band event (SIGIO) */
               uint32_t ssi_overrun; /* POSIX timer overrun count */
               uint32_t ssi_trapno;  /* Trap number that caused signal */
               int32_t  ssi_status;  /* Exit status or signal (SIGCHLD) */
               int32_t  ssi_int;     /* Integer sent by sigqueue(2) */
               uint64_t ssi_ptr;     /* Pointer sent by sigqueue(2) */
               uint64_t ssi_utime;   /* User CPU time consumed (SIGCHLD) */
               uint64_t ssi_stime;   /* System CPU time consumed (SIGCHLD) */
               uint64_t ssi_addr;    /* Address that generated signal
                                        (for hardware-generated signals) */
               uint8_t  pad[X];      /* Pad size to 128 bytes (allow for
                                         additional fields in the future) */
           };
似乎很清楚:ssi\u signo包含信号号。它说关于ssi_代码:

并非返回的signalfd_siginfo结构中的所有字段都对特定信号有效;可以确定有效字段集 从ssi_代码字段中返回的值。这个字段是 模拟siginfo_t si_代码字段;有关详细信息,请参见行动(2)

有关此代码的更多详细信息,请参见第页,该代码不是信号号