2
import os
pid = os.fork()
if pid == 0:
        print("This is the child")
else:
        print("the child is pid %d" % pid)

在上述代码的输出中,if 和 else 块都被执行。先是else,后是if。这种行为是预期的吗?

4

1 回答 1

4

该行为实际上是未指定的。

您(可能)知道fork()复制当前流程。在一种情况下,它返回0,在另一种情况下,它返回新进程的 pid。

所以这两个部分都被拿走了,因为你实际上是在执行它两次。

哪个先走?这取决于操作系统选择首先调度的两个进程中的哪一个。根据操作系统的不同,可能会有一种趋势,或者它可能总是相同的,但你不应该依赖这种行为。

于 2013-09-12T10:24:18.603 回答