c - 难以理解 c 中的 fork()

标签 c

<分区>

我知道 fork() 会创建一个 child ,for loop 会为每个 child 重复 fork()。但我不知道为什么我得到 7 个子进程重复 3 次。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
    int i;
    printf("Process PID %6d \t PPID %6d \n",
    getpid(), getppid());
    for (i = 0; i<3; ++i)
    {
        if (fork()==0)
        printf("Process PID %6d \t PPID %6d \n", getpid(), getppid()); 
    }
    return 0;
}

谁能解释一下这个编码

最佳答案

让我画一个 TreeMap 。

parent i=0
fork() -------------------------------------v
parent i=1                                  child1 i=1
fork() ---------------v                     fork() ---------------v
parent i=2            child2 i=2            child1 i=2            child2 i=2
fork() ----v          fork() ----v          fork() ----v          fork() ----v
parent i=3 child3 i=3 child2 i=3 child3 i=3 child1 i=3 child3 i=3 child2 i=3 child3 i=3
           1          2          3          4          5          6          7

因此创建了 7 个 child 。

关于c - 难以理解 c 中的 fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36986069/

相关文章:

c - stat 函数返回空结构

c - For inside for - 如何在不花时间创建线程的情况下进行内部并行

c - 多次 fork 并在 exec 之前打印一些内容

c - PIC32 的 J1939 C 库的修改

c - 为什么这些常量以不同的方式声明?

c - 为什么堆栈变量会影响文本段

c++ - OpenGL 中的调色板动画

c - 使用gcc 64位进行c编程时的编译错误

c - C 中的正则表达式

c - 在句子中查找特定字符并打印具有该字符的每个单词