<分区>
我试图理解为什么这个程序的输出总是以 012xxxxxxx
开头 这是代码:
int main() {
int i;
for (i=0; i<2; i++) {
fork();
printf("%d", i);
}
printf("2");
}
我画了流程图:
但我不明白这种输出是如何可能的。 谁能帮我看看为什么总是这样。
<分区>
我试图理解为什么这个程序的输出总是以 012xxxxxxx
开头 这是代码:
int main() {
int i;
for (i=0; i<2; i++) {
fork();
printf("%d", i);
}
printf("2");
}
我画了流程图:
但我不明白这种输出是如何可能的。 谁能帮我看看为什么总是这样。
最佳答案
一个简单的解释是,原始进程比 fork 进程更快地准备好继续。
所以原始进程触发了操作系统中的 fork ,然后继续,产生 0、1、2,然后完成。然后 fork 进程开始并进行打印。
请注意,fork()
不保证这两个进程的执行顺序;它们只是操作系统中的两个独立进程。很可能是操作系统让第一个在切换之前再运行 100 个 CPU 周期(然后它就已经完成了)。
在另一个操作系统上,它可能正好相反......
关于c - 使用 fork() 的程序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988567/