【发布时间】:2011-08-26 01:55:46
【问题描述】:
我正在尝试以下 C 代码:
int main()
{
printf("text1\n");
fork();
printf("text2\n");
return 0;
}
我希望得到两个“text1”和两个“text2”的输出,例如:
text1
text1
text2
text2
但是,相反,我得到了:
text1
text2
text2
只有一个“text1”??? 好的,如果子进程从 fork() 执行,那么为什么我会得到两个“text1”:
int main()
{
printf("text1");
fork();
printf("text2\n");
return 0;
}
现在的输出是:
text1text2
text1text2
如果子进程在fork之后启动,输出应该是:
text1
text2
text2
【问题讨论】:
-
为什么会期望有两个“text1”副本?在您点击
fork之前只有一个进程。 -
@user749391:代码按预期工作。在您真正解释为什么您希望看到两个“text1”之前,无法有意义地回答像您这样的问题。
-
检查this。它输出为 text1
text2
text1
text2。为什么会有这样的差异