C 如何编写一个程序,为每个进程创建两个父进程和一个子进程?

C 如何编写一个程序,为每个进程创建两个父进程和一个子进程?,c,C,我不确定这段代码做什么 #include <sys/wait.h> #include <stdio.h> #include <unistd.h> int main(void) { for(int i=0; i<2; i++) { int pid=fork(); if(pid==0) { printf("child process \n");

我不确定这段代码做什么

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

int main(void)
{
    for(int i=0; i<2; i++)
    {
        int pid=fork();
        if(pid==0)
        {
            printf("child process \n");
            printf("Child pid id [%d], parent pid is [%d]\n", (int) getpid(), (int) getppid());
        } else if(pid>0)
        {
            int stats;
            wait(&stats);
            printf("parent process \n");
            printf("Child pid id [%d], parent pid is [%d]\n", (int) getpid(), (int) getppid());
        }
    }
    return 0;
}
#包括
#包括
#包括
内部主(空)
{
对于(int i=0;i0)
{
智力统计;
等待(&stats);
printf(“父进程”);
printf(“子pid id[%d],父pid为[%d]\n”,(int)getpid(),(int)getppid());
}
}
返回0;
}

我调用
fork()
并将其值分配给variabe
pid
。然后我们转到
int stats
,下一行返回
pid=0
,然后程序显示子进程,然后显示父进程。它工作得很好,但只有当
i我不能完全确定你所说的“双亲”是什么意思时。在任何情况下,都需要返回子级,以便它们不会再次循环:

        printf("Child pid id [%d], parent pid is [%d]\n", (int) getpid(), (int) getppid());
        return 0;

否则,您将让子进程生成其他进程。

您所说的“为每个进程生成两个父进程和一个子进程”是什么意思?一个进程只能有一个父进程。同样在if语句的父分支中:
pid
保存新创建的子进程的id,
getppid
将返回主进程的父进程的id(即新创建进程的父进程),我的意思是这样的。假设我们有一个称为L1(主程序)的进程。首先它用pid 10创建一个子L2,我们打印这个pid,然后用pid 11创建另一个进程(L2的子进程),然后程序显示
子pid为[11],父pid为[10]
之后,我们返回主函数,创建一个子od主函数,名为L3,pid为20;对于L3进程,我们创建子od主函数,名为L5,pid为21。然后程序打印
子pid为[21],父pid为[20]