进程ID:生成方法:
linux采用了”延迟重用“的算法来进行PID的分配,简单说就是:
1 按顺序依次递增分配
2 到头了在回绕
3 使用位图来快速判断ID是否已经被分配
查看进程ID最大值命令:
sysctl -a | grep pid_max
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
int max = 0;
int min = 65535;
pid_t pid;
int loop = 0;
while (1)
{
pid = fork();
if (pid < 0)
{
printf("fork error\n");
break;
}
else if (pid == 0)
{
exit(0);
}
else
{
if (pid > max)
{
max = pid;
}
if (pid < min)
{
min = pid;
}
int exit_status;
if (waitpid(pid, &exit_status, 0) < 0)
{
break;
}
++loop;
if (loop >= 32768)
{
printf("max = %d, min = %d\n", max, min);
break;
}
}
}
return 0;
}