#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int num = 5;
pid_t pid;
int i;
for(i = 0; i < num; i++)
{
pid = fork(); // 父进程创建子进程
if(pid == 0) // 特别注意:必须要这个条件判断,否则子进程会继续创建子进程
{
break; // 子进程跳出循环,避免它再次fork,出现孙子进程
}
}
// 判断是第几个孩子 子进程的pid 父进程的pid // 因为子进程会被break出循环
if(i < 5)
{
printf("child_%d pid = %d ppid = %d\n", i+1, getpid(), getppid());
}
// 父进程
if(i == num)
{
sleep(1); // 控制,使父进程最后输出
printf("parent pid = %d\n", getpid());
}
return 0;
}
结果为: