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
{
}