利用fork创建子进程
Posted it8343
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用fork创建子进程相关的知识,希望对你有一定的参考价值。
创建如图的进程:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<wait.h>
int main()
{
int pid=fork();//创建子进程
if(pid==0)
{
printf("D:%d %d
",getppid(),getpid());return 0;//子进程结束
}
int pid2=fork();//创建子进程
if(pid2==0)
{
printf("C:%d %d
",getppid(),getpid());waitpid(pid2,NULL,0);return 0;//子进程结束
}
int pid3=fork();
if(pid3==0)//创建子进程
{
printf("B:%d %d
",getppid(),getpid());return 0;//子进程结束
}
printf("父进程id 当前进程id
");
printf("A:%d %d
",getppid(),getpid());
waitpid(pid,NULL,0);waitpid(pid2,NULL,0);waitpid(pid3,NULL,0);//等待子进程结束;
return 0;
}
结果如下:
父进程id 当前进程id A:3195 6051 D:6051 6052 C:6051 6053 B:6051 6054
创建如图的进程:
#include<stdio.h>
#include<unistd.h>
#include<wait.h>
#include<stdlib.h>
int main()
{
int pid=fork();int pid3;
if(pid==0)
{
printf("C:%d %d
",getppid(),getpid());return 0;
}
int pid2=fork();
if(pid2==0)
{
pid3=fork();
if (pid3==0)
{
printf("D:%d %d
",getppid(),getpid());return 0;
}
else
{
printf("B:%d %d
",getppid(),getpid());return 0;
}
}
printf("父进程id 当前进程id
");
printf("A:%d %d
",getppid(),getpid());
waitpid(pid,NULL,0);waitpid(pid2,NULL,0);waitpid(pid3,NULL,0);
return 0;
}
结果如下:
父进程id 当前进程id A:3195 6071 C:6071 6072 B:6071 6073 D:6073 6074
以上是关于利用fork创建子进程的主要内容,如果未能解决你的问题,请参考以下文章