2016-03-03 152 views
0

我已閱讀關於在Linux進程中的信號處理。我使用的是centOS 7.1(內核3.10+)。我在我的C++程序中僅註冊處理程序SIGTERM。據我所知(不知道我的假設是否正確)。我們可以通過使用SigCgt字段掩碼來檢查進程在/proc/$ pid/status文件中偵聽的所有信號。我進程的的/ proc/$ PID /狀態顯示SigCgt領域如下: -SigCgt值在/ proc/<pid>/status文件中未得到更新?

SigCgt: 0000000184000200 ==> BitMask for this ‭‭0001 1000 0000 0000 0000 0100 0010 0000 0000 

按我的知識,每個位對應於一個信號。因爲第15位對應於SIGTERM的位在上面的掩碼中是1。它表示註冊了SIGTERM的信號處理程序。

我的問題是,SigCgt即使我沒有註冊任何信號處理程序,字段值保持不變。那麼如何設置幾個位包括第15位位(這是用於SIGTERMSigCgt bitmask?

任何幫助,非常感謝。我已經做了足夠的搜索,但找不到合適的解釋。 此外,這將是一個很大的幫助如果任何人都可以指向我正確的文檔或鏈接。

在此先感謝。

回答

1

你誤解了SIGTERM位。 0000000184000200的前16位由0200給出,其爲0000 0010 0000 0000。第15位(lsb位爲#1)爲0。唯一的一點是#10又名SIGUSR1

+0

非常感謝您在這裏糾正我。 :)現在所有的疑慮都很清楚。 :) – piyush