fork同一时候创建多个子进程的方法
Fork同一时候创建多个子进程方法
第一种方法:验证通过
特点:同一时候创建多个子进程。每一个子进程能够运行不同的任务,程序
int
{
printf("before
pid_t
if(
{
printf("in
return
}
pid_t
if(
{
printf("in
return
Printf("hello
}
int
waitpid(
waitpid(
printf("in
printf("in
printf("in
printf("in
printf("in
return
}
另外一种方法:
特点:同一时候创建两个子进程。结构比較繁琐。程序可读性不好,不易扩展
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
main()
{
printf("This
pid_t
if((p1=fork())==0)
{
printf("This
}
Else
{
if((p2=fork())==0)
{
printf("This
}
Else
{
wait(p1,NULL,0);
wait(p2,NULL,0);
printf("This
}
}
}
第三种方法:for
特点:事实上每次循环仅仅是创建了单个进程。并没有同一时候创建多个进程
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
main()
{
printf("This
pid_t
int
for(i=0;i<=2;i++)
{
if((p1=fork())==0)
{
printf("This
return
}
wait(p1,NULL,0);
printf("This
}
}
注意:标注的
无
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
main()
{
printf("This
pid_t
int
for(i=0;i<=2;i++)
{
if((p1=fork())==0)
{
printf("This
//return
}
wait(p1,NULL,0);
printf("This
}
}
结论:父进程会生成
正确的使用Linux中的用fork()由一个父进程创建同一时候多个子进程
int
for
{
}
if
{
}
else
{
}
else
{
}