Fork同一時候建立多個子進程方法post
第一種方法:驗證經過
特色:同一時候建立多個子進程。每個子進程可以運行不一樣的任務,程序
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
{
}