如何编写c代码来使用fork()创建树?

如何编写c代码来使用fork()创建树?,c,linux,ubuntu,fork,C,Linux,Ubuntu,Fork,如何编写c代码来使用fork()创建以下进程,并且必须使用以下函数:wait(0)、getpid()和getppid()来打印您创建的每个进程的id和父进程id #包括 #包括 #包括 #包括 int main() { printf(“进程id%d”,getpid()); pid_t pid1、pid2、pid3; pid1=fork(); pid2=fork(); pid3=fork(); 如果((pid2==0)和&(pid3==0)) { 如果(pid1!=0) fork(); } pr

如何编写c代码来使用fork()创建以下进程,并且必须使用以下函数:wait(0)、getpid()和getppid()来打印您创建的每个进程的id和父进程id

#包括
#包括
#包括
#包括
int main()
{
printf(“进程id%d”,getpid());
pid_t pid1、pid2、pid3;
pid1=fork();
pid2=fork();
pid3=fork();
如果((pid2==0)和&(pid3==0))
{
如果(pid1!=0)
fork();
}
printf(“进程id%d”,getpid());
返回0;
}
fork()
创建子线程进程

int main ( ) {
    fork();

    printf("Current Process id: %d", getpid());
    printf("Parent Process id: %d", getppid());

    fork();
}

这将展示如何在linux中使用C处理线程的示例。

请检查此代码

#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{

 printf("the process id %d" , getpid());

 pid_t pid1,pid2,pid3;

pid1=fork();

if (pid 1==0)
pid2=fork();
pid3=fork();

if((pid2 == 0)&&(pid3 == 0)) 
{
    if (pid1 !=0)
    fork();
}

 printf("the process id %d" , getpid());

return 0;

}
#包括
#包括
#包括
#包括
int main()
{
printf(“进程id%d”,getpid());
pid_t pid1、pid2、pid3;
pid1=fork();
如果(pid 1==0)
pid2=fork();
pid3=fork();
如果((pid2==0)和&(pid3==0))
{
如果(pid1!=0)
fork();
}
printf(“进程id%d”,getpid());
返回0;
}

请描述到目前为止您尝试了什么。编译、链接和测试它时发生了什么?格式化/缩进是没有希望的。你刚才把代码放在一起了吗?你的
pid2=fork()
pid3=fork()语句需要条件化,以便只有原始进程执行它们。否则,此时将有8个进程。
#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{

 printf("the process id %d" , getpid());

 pid_t pid1,pid2,pid3;

pid1=fork();

if (pid 1==0)
pid2=fork();
pid3=fork();

if((pid2 == 0)&&(pid3 == 0)) 
{
    if (pid1 !=0)
    fork();
}

 printf("the process id %d" , getpid());

return 0;

}