SigCgt值是否未在/ proc / <pid> / status文件中更新?

时间:2016-03-03 13:02:05

标签: c++ c linux signals

我已经阅读过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 位(用于SIGTERM )?

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

你错了SIGTERM位。 0000000184000200的前16位由0200给出,即0000 0010 0000 0000。第15位(lsb为位#1)为0。唯一的一点就是#10又名SIGUSR1