Linux 创建多个子进程
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
//pid_t pid;
/*
* num:当前已经创建的子进程数
* max:需要创建的子进程数
*/
void createsubprocess(int num,int max)
{
pid_t pid;
if(num>=max) return;
pid=fork();
if(pid<0)
{
perror("fork error!\n");
exit(1);
}
else if(pid==0) //子进程
{
//sleep(1);
printf("child pid=%d, parent pid=%d\n", getpid(), getppid());
}
else //父进程
{
num++;
if(num==1) printf("parent pid=%d\n",getpid());
if(num<max)createsubprocess(num,max);
//此处加sleep是为了防止父进程先退出,从而产生异常
sleep(1);
}
}
/*
* 创建指定数目的子进程
*/
void createsubprocess2(int num)
{
pid_t pid;
int i;
for(i=0;i<num;i++)
{
pid=fork();
//子进程或创建进程失败均退出
if(pid==0||pid==-1)
{
break;
}
}
if(pid==-1)
{
perror("fail to fork!\n");
exit(1);
}
else if(pid==0)
{
printf("child pid=%d, parent pid=%d\n", getpid(), getppid());
//exit(0);
}
else
{
printf("parent pid=%d\n", getpid());
sleep(1);
//exit(0);
}
}
int main()
{
int num=0;
int max=3;
//createsubprocess(num,max);
createsubprocess2(3);
printf("test... pid=%d\n", getpid() );
return 0;
}