Posix
能力是每個程序還是每個執行緒的屬性?
文件說功能是每個執行緒的屬性。確實在任何
/proc/[PID]/task/[LWP]/status
我們可以找到與此執行緒相關的功能:
CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 0000003fffffffff CapAmb: 0000000000000000
但與此同時,有關能力的類似資訊位於
/proc/[PID]/status
所以程序,顯然有它自己的能力。這讓我感到困惑 - 是程序還是執行緒的功能屬性?當執行一些需要能力的命令時,核心會檢查什麼集合?
能力確實是每個執行緒的,一個執行緒可以改變它自己的能力(在目前能力允許的情況下)使用
capset
而不影響其他現有執行緒的能力。
/proc/[PID]/status
顯示與 pid 匹配的執行緒的功能,或者更準確地說,是執行緒組 id(在 Linux 中是程序 id)。核心總是檢查相關執行緒的能力。