linux中fork同时创建多个子进程的方法(一)
(2012-02-08 10:13:30)
标签:
linuxfork同时多个进程it |
分类: C |
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
{
}