signalfd_siginfo结构中的ssi_code有什么用?
我正在使用 signalfd() 来监视我的进程创建的子进程的死亡。如果我用信号杀死一个子进程,父进程会在信号 fd 上获取一个读取事件,并填充 signalfd_siginfo 结构。它有一个 ssi_code 字段,设置为子进程收到的信号编号(例如,如果我向子进程发送 SIGKILL,则为 9)。
我可以一直依赖这种行为吗?支持 signalfd 的所有 Linux 内核版本对此字段的用法都相同吗?
注意:如果子进程调用 exit(),则传递给 exit 的代码将填充在 ssi_code 中。
I am using signalfd() to monitor the death of child processes created by my process. If I kill a child process with a signal, parent gets a read event on the signal fd with signalfd_siginfo structure populated. It has a field ssi_code which is set to the signal number the child received (for example 9 if I sent SIGKILL to the child).
Can I rely on this behavior always ? All versions of Linux kernel where signalfd is supported has the same usage for this field ?
Note: If the child calls exit() then the code passed to exit is populated in ssi_code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
signalfd 的手册页指出:
看起来很清楚:ssi_signo 包含信号号。关于 ssi_code 它说:
有关此代码的更多详细信息,请参阅 sigaction 手册 页面,该代码是不是信号编号。
man page of signalfd states :
It seems clear : ssi_signo contains the signal number. It says about ssi_code that :
See sigaction man page for more details about this code which is not the signal number.