相信大家都知道,在linux环境中,使用fork()函数来创建子进程.然而市面上的书籍往往都是告诉大家如何创建一个子进程,那么如何创建某个进程的多个子进程呢?
好了,废话不多数了,请看如下代码(这里我们采用递归实现):
#include<stdio.h> #include<stdlib.h> #include<unistd.h> pid_t pid; /* * num:当前已经创建的子进程数 * max:需要创建的子进程数 */ void createsubprocess(int num,int max) { if(num>=max)return; pid=fork(); if(pid<0) { perror("fork error!\n"); exit(1); } //子进程 else if(pid==0) { sleep(3); printf("子进程id=%d,父进程id=%d\n",getpid(),getppid()); } //父进程 else { num++; if(num==1)printf("父进程id=%d\n",getpid()); if(num<max)createsubprocess(num,max); //此处加sleep是为了防止父进程先退出,从而产生异常 sleep(5); } } int main() { int num=0; int max=3; createsubprocess(num,max); return 0; }
运行结果如下所示: