[英]How many processes are created after four fork() in Linux?
我在操作系统教科书上看到一个愚蠢的问题。 问题如下:
假定所有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");
}
但是当我从课本中键入相同的代码时,我得到了30行
这是正常的:
2 + 4 + 8 + 16等于30:您有30条线。
结果应该是这样的:
fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4 fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4
(空格仅用于更好地阅读)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.