我在操作系统课本上看到一个愚蠢的问题。问题如下:假设所有fork系统调用都成功。在执行下面所示的程序之后。屏幕上有多少行?
我假设每个fork调用都会使进程加倍,因此结果应该是创建了16个进程。但是当我从课本上输入相同的代码时,我得到了30行。以下是结果和代码:
http://imgur.com/zrdOP0X

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

int main(){
    fork();
    printf("After fork1\n");
    fork();
    printf("After fork2\n");
    fork();
    printf("After fork3\n");
    fork();
    printf("After fork4\n");
}

最佳答案

结果应该是这样的:
fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4

(这些空间只是为了更好地阅读)

关于c - 在Linux中四次fork()之后创建了多少个进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36795044/

10-10 11:14