Qual é o valor máximo do ID do processo? abrange o máximo; existem processos reservados ( 0
e 1
são notáveis) mas não muitos, e há um pouco de código no kernel que escolhe o próximo inteiro livre (a maioria unix) ou um pid aleatório (OpenBSD, ou alguns tipos de Linux). O OpenBSD chama esse allocpid
, que pode ser encontrado em 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;
}