![功能是每个进程的属性还是每个线程的属性?](https://linux22.com/image/201221/%E5%8A%9F%E8%83%BD%E6%98%AF%E6%AF%8F%E4%B8%AA%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%B1%9E%E6%80%A7%E8%BF%98%E6%98%AF%E6%AF%8F%E4%B8%AA%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%B1%9E%E6%80%A7%EF%BC%9F.png)
文档说能力是每个线程的属性。确实在任何
/proc/[PID]/task/[LWP]/status
我们可以找到与此线程相关的功能:
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
但同时有关功能的类似信息位于
/proc/[PID]/status
那么流程,显然有它自己的能力。这让我很困惑 - 能力属性是进程还是线程?当执行某些需要功能的命令时,内核会检查什么集?
答案1
功能确实是针对每个线程的,并且线程可以使用以下命令更改其自己的功能(在当前功能允许的情况下)capset
而不影响其他现有线程的功能。
/proc/[PID]/status
显示匹配 pid 的线程的功能,或者更准确地说,匹配线程组 id(Linux 中的进程 id)。
内核总是检查相关线程的能力。