c - 试图弄清楚 fork() 在这种情况下是如何工作的,但我似乎不明白答案是如何实现的

标签 c multithreading fork

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    int pid1=0, pid2=0, pid3=0;
    pid1 = fork() ;
    pid2 = fork() ;
    if(pid1 == 0 ) {
        printf("A\n") ;
    } else {
        pid3 = fork() ;
        printf("B\n") ;
    }
    if (pid2 != 0 && pid3 != 0) {
        printf("C\n") ;
    }
}

运行该程序将创建的进程总数是多少? ‘A’到‘C’每个字符会打印出多少个?简单解释一下原因。

2 个 A 的 4 个 B 的 1 个 C(2 分)

6道工序(含原一道工序)(2分)

最佳答案

在你们的帮助下我终于弄清楚了。解决方案附有图表,但令人困惑。但是,使用二叉树,我能够创建更好的图表版本,更好地解释该过程。

相同的颜色 block 代表相同的过程,只是在进度的不同点。二叉树的子节点代表进程的数量,打印输出从那里写入。检查一下并感谢所有的帮助。我现在明白发生了什么事。

enter image description here

关于c - 试图弄清楚 fork() 在这种情况下是如何工作的,但我似乎不明白答案是如何实现的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074393/

相关文章:

c - 函数 'saving progress' 的问题

java - 是否多线程任务?

c# - I/O 操作的 .NET 基于事件的异步模式是否会阻塞底层线程?

Java 线程限制,JVM 9

c - 在 C 中子方法内使用循环的奇怪结果

c - 使用strtok解析数据

android 在 cc/c++ 中获取 imei for ndk/JNI

c - 使用%f打印整数变量

c - 等待子进程的一部分完成?

c - fork() 和 pipe() 的小问题