Linux信号掩码 – 它们是什么意思?

你怎么能在一个16位掩码内存储32个信号

SigPnd: 0000000000000000 ShdPnd: 0000000000004000 SigBlk: 0000010000017003 SigIgn: 0000000000381000 

我如何解释SigIgn? 我读了proc文档,但是我不知道如何解释实际的位数。

不知道你从哪里得到“16位掩码内的32个信号”信息,但据我所知是错误的。

假设每行都是十六进制,那么每一行都是8字节或64位。 较低的4个字节(32位)是标准信号。 高32位是posix实时信号。 (这实际上比这更复杂一些 – 参见man(7)信号 ,SIGRTMAX和SIGRTMIN表示低位)。

因此,在SigIgn掩码中,您询问了关于所有内容的信息,但在较低的3个字节中有一些信息:38 10 00.在最低字节00中,没有信号被忽略。 在下一个字节中,十六进制10以二进制形式转换为00010000。 所以该字节的第5位是打开的。 同样,十六进制38转换为二进制00111000.把3个字节放在一起作为一个二进制字符串,我们得到:

 001110000001000000000000 

所以从右边数,我们可以看到位13 20 21 22是ON,因此被忽略。 如果你回到人(7)信号,你可以看到信号值表。 这些值按体系结构分解,假设你在一台ix86机器上,信号值表示SIGPIPE,SIGTSTP,SIGTTIN和SIGTTOU信号被忽略。