【问题标题】:SigCgt value is not getting updated in /proc/<pid>/status file?SigCgt 值未在 /proc/<pid>/status 文件中更新?
【发布时间】:2016-06-16 19:45:36
【问题描述】:

我已阅读有关 linux 进程中的信号处理的信息。我正在使用 centOS 7.1(内核 3.10+)。我只在我的 c++ 程序中为 SIGTERM 注册处理程序。据我所知(不确定我的假设是否正确)。我们可以使用 SigCgt 字段掩码在 /proc/$pid/status 文件中检查进程正在侦听的所有信号。我的进程的 /proc/$pid/status 显示 SigCgt 字段如下:-

SigCgt: 0000000184000200 ==> BitMask for this  ‭‭0001 1000 0000 0000 0000 0100 0010 0000 0000

据我所知,每一位对应一个信号。因为对应于 SIGTERM 的 15th 位在上面的掩码中是1。它表示 SIGTERM 的信号处理程序已注册。

我的问题是,即使我没有注册任何信号处理程序,SigCgt 字段值也保持不变。那么为什么在 SigCgt 位掩码中设置了几个位,包括 15th 位(which is for SIGTERM)?

非常感谢任何帮助。我已经做了足够的谷歌搜索,但找不到任何合适的解释。 此外,如果有人能指出正确的文档或链接,那将是一个很大的帮助。

提前致谢。

【问题讨论】:

    标签: c++ c linux signals


    【解决方案1】:

    您对 SIGTERM 位有误。 0000000184000200 的前 16 位由 0200 给出,即0000 0010 0000 0000。第 15 位(lsb 是第 1 位)是0。唯一的一点是#10 aka SIGUSR1

    【讨论】:

    • 非常感谢您在这里纠正我。 :) 现在所有的疑问都清楚了。 :)
    猜你喜欢
    • 2019-03-13
    • 2018-02-13
    • 2015-12-15
    • 2016-12-17
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多