我在使用这个程序时遇到了一些问题。我知道 fork() 函数的作用。它用于从现有流程创建新流程。新进程称为子进程,现有进程称为父进程。 parent 返回 child 的 pid, child 返回 0。也就是说,我很难理解这两个 fork 函数在这个程序中的作用。
#include <unistd.h>
#include <stdio.h>
int main()
{
int i,y,x=1;
for (i=0;i<4;i++)
if(x && fork())
{
y = i;
x = 0;
}
if (x) y = i;
fork();
printf("%i\n",y);
}
最佳答案
首先断言:fork 不会失败。事实并非如此,但更简单
如果(x && fork ()) -> 如果 x == 1 并且如果 fork 为父亲返回则为真 然后是假的。 所以 child 也会创造一个 child (除了最后一个)但是 父亲只生了一个 child 。
在循环之后你有 1 + 4 个新进程。 这 5 个进程执行最后一个 fork(),你有 10 个进程。
由于任务的调度,输出结果是不确定的。
关于c - fork() 函数在这个程序中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31194822/