Unix:我如何使用 fork 使一些进程在其层次结构中看起来像这样?

Unix: How can I use fork to make some processes that look like this in their ierarchy?

我正在创建一个 .c 文件,然后使用 gcc 对其进行编译。我想使用 fork 来创建以下 7 个进程,并显示层次结构。我该怎么做?另外,我是否必须使用 wait 才能做到这一点

        A
     /      \
   B         C
              |
              D
           /  |  \
         E    F   G

我在另一个网站上发现有人有类似的问题,我已经更新了他的解决方案以适应我的情况。这可能是一个解决方案:

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

int main() {

int status = 0;
printf("I am: %d\n\n", (int)getpid());
pid_t pid = fork(); // fork a child

if(pid == 0)
{
    printf("Hi I'm process %d and my parent is %d\n",getpid(),getppid());
exit(1);
}
else
{
    pid_t childPid = wait(&status);
    pid_t pid = fork(); // fork a child
    if (pid == 0)
    {
        printf("Hi I'm process %d and my parent is %d.\n", getpid(), getppid());
        pid = fork(); // fork a child
        if (pid == 0)
        {
                printf("Hi I'm process %d and my parent is %d.\n",getpid(),getppid());
        pid = fork();
        if(pid == 0)
        {
            printf("Hi I m process %d and my parent is %d\n", getpid(), getppid());
            exit(4);
        }
        else
        {
            pid = fork();
            if(pid==0)
            {
                printf("Hi i m process %d and my parent is %d\n", getpid(), getppid());
                exit(5);
            }
            else
            {
                pid = fork();
                if(pid == 0)
                {
                    printf("Hi i m process %d and my parent is %d\n", getpid(), getppid());
                    exit(6);
                }
            }
        }
    exit(3);
    }
    exit(2);
    }
}

return 0;
}