我已经阅读过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 )?
非常感谢任何帮助。我已经做了足够的谷歌搜索,但找不到任何适当的解释。 此外,如果有人能指出正确的文档或链接,那将是一个很好的帮助。
提前致谢。
答案 0 :(得分:1)
你错了SIGTERM位。 0000000184000200
的前16位由0200
给出,即0000 0010 0000 0000
。第15位(lsb为位#1)为0
。唯一的一点就是#10又名SIGUSR1
。