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()
并将其值分配给variabepid
。然后我们转到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]