问题 1:我想知道 Windows/Linux 如何在进程开始时为该进程分配 PID?它是一个带分隔符的随机数吗?还是它是针对计算机上的文件而固定的?它有特殊的算法吗?还有……
问题2:进程启动后可以改变其 PID 吗?
问题3:是否有可能阻止某个文件运行(我的意思是是否有可能限制操作系统不为文件分配任何 PID)?
答案1
这个答案是针对Windows的。
PID 不是随机的。PID(和线程 ID;它们位于同一个“数字空间”)通过多级表结构进行管理,其管理方式与内核对象句柄完全相同 - 尽管 PID 不是句柄。与句柄值一样,PID 被积极地重复使用,但从实际目的来看,它们是不可预测的。
问2:没有。
Q3:不,因为要分配给新进程的 PID 未知。试一试。运行记事本的一个实例,然后关闭它。过一段时间,再运行记事本的另一个实例。几乎可以肯定,你的两个记事本将具有不同的 PID。