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