gpt4 book ai didi

c - 这段代码中调用了 fork() 次数?

转载 作者:行者123 更新时间:2023-11-30 19:19:30 27 4
gpt4 key购买 nike

这是我从我的研究所去年的试卷中获得的代码。

   #include<stdio.h>
#include<unistd.h>
int main()
{
fork();
fork() && fork() || fork();
fork();
printf("forked ");
return 0;
}

我打印了 20 次“forked”作为输出。有人可以解释为什么会发生这种情况吗?

最佳答案

是的,在正常情况下(系统资源不低),您将获得 20 个forked 打印输出。为什么?

第一个 fork 是无条件的,所以无论接下来发生什么,我们都会得到两次。与第三组相同,所以我们总共会得到从第二组 fork 中得到的四倍,如果我们为了清楚起见添加括号,则结果是:

(fork() && fork()) || fork();

这里有多少人?那么,fork 将向一个进程返回零(假),而向另一个进程返回非零。所以:

        -> true
true -/-> false -\-> true
-> false

false ------------\-> true
-> false

每一行中都有一个单独的进程,它通过调用进行。您可以看到有五行,因此有五个进程。将其乘以我们上面确定的 4,即可得到 20。

关于c - 这段代码中调用了 fork() 次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com