#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* 创建指定数量的子进程 */
int main(int argc, char *argv[])
{
int i = 0;
pid_t pid;
//父进程创建3个子进程
for(i = 0;i < 3 ; ++i)
{
pid = fork();
if(pid == 0)//子进程不再创建其他进程
break;
}
//i==0、1、2为子进程, i= =3为父进程
switch(i)
{
case 0://子进程代码
printf("子进程1(%d)正在执行...\n", getpid());
sleep(1);
break;
case 1://子进程代码
printf("子进程2(%d)正在执行...\n", getpid());
sleep(2);
break;
case 2://子进程代码
printf("子进程3(%d)正在执行...\n", getpid());
sleep(3);
break;
case 3://父进程代码,回收子进程
while((pid = wait(NULL))!=-1)
printf("子进程%d已退出\n", pid);
break;
}
return 0;
}
执行结果如下: