如何在16位掩码中存储32个信号?
SigPnd: 0000000000000000
ShdPnd: 0000000000004000
SigBlk: 0000010000017003
SigIgn: 0000000000381000
我如何解释SigIgn?我阅读了proc文档,但我不知道如何解释实际位的含义。
答案 0 :(得分:5)
不知道你从哪里得到“16位掩码内的32个信号”信息,但据我所知它是错误的。
假设每行是十六进制,则每行为8字节或64位。低4字节(32位)是标准信号。高32位是posix实时信号。 (它实际上比这更复杂 - 请参阅man (7) signal和SIGRTMAX和SIGRTMIN以获得低位。)
因此,在SigIgn掩码中,您询问所有内容是否已关闭,但在较低的3个字节中有几项:38 10 00.在最低位字节00中,不会忽略任何信号。在下一个字节中,十六进制10以二进制形式转换为00010000。因此该字节中的第5位开启。同样,十六进制38转换为二进制00111000。将3个字节放在一起作为二进制字符串,我们得到:
001110000001000000000000
因此从右边开始计数我们可以看到位13 20 21 22是ON,因此被忽略。如果您返回man (7) signal,您可以看到表格中的信号值。这些值按架构细分,因此,假设您使用的是ix86机器,则信号值表示SIGPIPE,SIGTSTP,SIGTTIN和SIGTTOU信号被忽略。