#include<stdio.h>#include<stdlib.h>#include <unistd.h>//父进程产生一系列子进程,每个子进程打印自己的PID然后退出。要求父进程最后打印PID。int main(){int num = 5;int i;pid_t pid,ret;for(i=0;i<num;i++){pid = fork();if(pid==0 || pid==-1)//子进程或创建进程失败均退出,这里是关键所在{break;}}if(pid < 0){printf("error foek\n");exit(1);}if(pid == 0)//子进程{printf("子进程pid = %d,对应的父进程pid = %d\n",getpid(),getppid());sleep(1);exit(1);}if(pid > 0)//父进程{//阻塞等待任意子进程,回收子进程8kb物理内存wait(NULL);printf("父进程pid = %d\n",getpid());exit(1);}}/*$ ./a.out子进程pid = 25489,对应的父进程pid = 25488子进程pid = 25490,对应的父进程pid = 25488子进程pid = 25493,对应的父进程pid = 25488子进程pid = 25491,对应的父进程pid = 25488子进程pid = 25492,对应的父进程pid = 25488父进程pid = 25488*/