什么决定了进程将被分配的 PID?
似乎用于 ID 的整数值有一个上限;这个限制是什么,它在哪里定义?
是否有为非用户创建的进程保留的范围?
需要明确的是,我问这个更多是出于好奇而不是任何实际原因。
thr*_*rig 13
进程 ID 的最大值是多少?覆盖最大值;有保留进程(0
并且1
值得注意)但不多,内核中有一些代码选择下一个空闲整数(大多数 unix)或随机 pid(OpenBSD,或某些 Linux)。OpenBSD 调用allocpid
它可以在kern/kern_fork.c
/* Find an unused pid */
pid_t
allocpid(void)
{
static pid_t lastpid;
pid_t pid;
if (!randompid) {
/* only used early on for system processes */
pid = ++lastpid;
} else {
/* Find an unused pid satisfying lastpid < pid <= PID_MAX */
do {
pid = arc4random_uniform(PID_MAX - lastpid) + 1 +
lastpid;
} while (ispidtaken(pid));
}
return pid;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1971 次 |
最近记录: |