c - c中的fork()系统调用

标签 c unix fork

    #include <stdio.h>
    #include <unistd.h>
    int main()
    {
       fork();
       fork() && fork() || fork();
       fork();

     printf("forked\n");
     return 0;
    }

如何计算执行程序后产生的进程数,这导致难以理解? 帮我查一下。

平台--UBUNTU 10.04

最佳答案

让我们跟随 fork 树,假设没有 fork 失败

fork();

现在我们有两个进程,到目前为止,谁是 child 谁是 parent 并不重要,称它们为 p1 和 p2

fork()

这两个进程都产生了另一个子进程,所以我们有 4 个进程,其中两个(p3、p4)的结果为零,另外两个(p1 和 p2)的结果为非零

   && fork()

p1 和 p2 再次 fork,给 p5 和 p6,总共六个进程。在 p1 和 p2 中,&& 的计算结果为 true,因此它们不会在此行中再次 fork 。对于 p3、p4、p5、p6,&& 的计算结果为 false,因此它们 fork

              || fork();

在这里,产生了四个新进程,总共有 6 + 4 = 10。

fork();

10 个进程中的每一个再次 fork,产生 20 个。

关于c - c中的fork()系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726965/

相关文章:

从二维动态字符数组复制到c中的另一个二维动态数组

在 C 语言的 Game of Life 游戏中检查邻居的状态

linux - sudo模式和内核模式有区别吗?

c - 子进程是否执行这两个打印?

c++ - popen telnet 中的子命令

c - fork 进程总是返回 > 0 我不知道为什么?

c - C 输出中的随机字节

c - 产生荒谬的输出

linux - 我们如何在linux中查看进程的 "locked"共享内存?

unix - 如何在 C-shell echo 命令中包含换行符?