2013-07-10 19 views
2

如何在16位掩碼內存儲32個信號?Linux信號掩碼 - 它們是什麼意思?

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

如何解釋SigIgn例如?我閱讀了proc文檔,但我沒有得到如何解釋實際位的含義。

+0

看起來像一個64位的面具給我! – wildplasser

回答

5

不知道從哪裏得到了「16位掩碼內的32個信號」信息,但據我所知,這是錯誤的。

假設每行都是十六進制,那麼每行都是8個字節或64位。較低的4個字節(32位)是標準信號。高32位是posix實時信號。 (它實際上是一個多一點令人費解的是 - 看man (7) signal和SIGRTMAX和SIGRTMIN爲低下來)

所以在SigIgn掩蓋你問有關的一切關閉,但在較低的3個字節的幾件事情:38 10在最低位字節00中,沒有信號被忽略。在下一個字節中,十六進制10以二進制形式轉換爲00010000。所以該字節的第5位開啓。同樣六角38只將二進制00111000.把3個字節一起作爲二進制的字符串,我們得到:

001110000001000000000000 

所以從右側計數我們可以看到,位13 20 21 22爲ON,因此忽略不計。如果你回到man (7) signal你可以看到信號值的表格。這些值按體系結構分解,假設您使用的是ix86機器,則信號值表示SIGPIPE,SIGTSTP,SIGTTIN和SIGTTOU信號被忽略。

+0

非常感謝! – user622469

相關問題