如何创建某个进程的多个子进程?(方式一)

       相信大家都知道,在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;
}

 

    运行结果如下所示:
   
  

猜你喜欢

转载自liukexiong.iteye.com/blog/926725