草庐IT

siginfo_t

全部标签

sigaction:使用“ void( *sa_sigaction)(int,siginfo_t *,void *);”;

在sigaction它写的manpage:sa_sigaction还指定要与之关联的动作signum。此函数接收信号号作为其第一个参数,一个指向siginfo_t作为其第二个参数和指向ucon-text_t的指针(施放到void*)作为第三个论点。因此,我们可以将论点传递给信号处理程序(通过void*),但我找不到路。有没有办法将其放置在任何地方?例子:structping_val{intdata1;intdata2;};voidping(intsig,siginfo_t*siginf,void*ptr){//....}intmain(){structsigactionsa_ping;ping

ruby - 在 linux 上的 ruby​​ 中,有没有办法获取捕获信号的 siginfo_t 数据?

我试图弄清楚哪个进程正在向我的一个ruby​​脚本发送信号。我能够捕获信号-有什么方法可以在我完成后找出发送它的进程吗?通常,这将在传递给信号处理程序的siginfo_t结构中-这在ruby​​中公开了吗? 最佳答案 查看有关ruby​​信号处理的文档,我会说此信息不可用。http://www.ruby-doc.org/core/classes/Signal.html 关于ruby-在linux上的ruby​​中,有没有办法获取捕获信号的siginfo_t数据?,我们在StackOver

c - siginfo 中的数据可信吗?

我发现在Linux上,通过自己调用rt_sigqueue系统调用,我可以将我喜欢的任何内容放入si_uid和si_pid字段,调用成功并愉快地传递了不正确的值。自然地,发送信号的uid限制提供了一些防止这种欺骗的保护,但我担心依赖这些信息可能是危险的。关于我可以阅读的主题有什么好的文档吗?为什么Linux允许调用者指定siginfo参数而不是在内核空间中生成它们这一明显不正确的行为?这看起来很荒谬,尤其是因为额外的系统为了在用户空间中获取uid/gid,可能需要调用(因此需要性能成本)。编辑:根据我对POSIX的阅读(重点是我加的):Ifsi_codeisSI_USERorSI_QUE