【发布时间】:2016-12-14 23:52:06
【问题描述】:
如果对 fork() 的调用成功执行,Unix 将 制作两份相同的地址空间副本,一份给父母,一份给孩子。 两个进程都将在 fork() 调用之后的下一条语句开始执行。[Ref:http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html]。
所以,如果我执行以下代码:
#include <stdio.h>
int main(void)
{
printf("Hello\n");
fork();
printf("World\n");
return 0;
}
我认为它会打印出来
Hello
World
World
但是当我运行程序时它会打印出来
Hello
World
Hello
World
请解释我在哪里缺乏概念?
【问题讨论】:
-
奇怪,我得到了预期的输出。你好,世界
-
我认为如果你使用 printf() 你不能有 'Hello World World' o/p。如果我错了请纠正我。
-
您将得到“Hello World World”作为输出,我只是简单地复制并编译了代码,得到了相同的结果,这正是我所期望的。
-
Also posted on CS.SE。请do not post the same question on multiple sites。每个社区都应该诚实地回答问题,而不会浪费任何人的时间。
标签: unix operating-system printf fork