运行以下程序时,将创建多少个进程?我无法解决。如果您有帮助,我将不胜感激
int main()
{
int i;
for (i=fork(); i<2; i++ )
fork();
}
答案 0 :(得分:-1)
fork()创建一个子进程,并创建父进程的另一个实例。它向子级返回0,并向父级返回子级的PID。
在这种情况下,当执行 i = fork()时, 父级被分配给我作为子进程的PID,它很可能大于1。即使 i <2 失败,父级中的for循环也不会运行。此时有两个进程P和C1(子进程)
由父级执行派生后,子级将获得0作为返回值,i =0。这意味着条件 i <2 成功。子级在循环体内执行fork(),创建C2。 C1和C2中i的值均为0。i递增为1。
C1和C2执行 i <2 ,此条件成功。叉由两个执行。 C3由C1生成,C4由C2生成。
i的值增加到2。i <2失败。他们都跳出了循环
总而言之,此程序创建了4个子进程。您可以使用以下程序尝试此操作,在该程序中您将看到5个PID正在打印。
#include <stdio.h>
main()
{
int i = 0;
for (i = fork(); i < 2; i++)
fork();
printf("Hello World i %d\n", getpid());
}