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。预期会出现这种情况吗?
答案 0 :(得分:4)
行为有效地未指明。
正如您(可能)知道fork()
复制当前流程。在一个实例中,它返回0
,在另一个实例中,它返回新进程的pid。
所以这两个部分都被采用了,因为你实际上已经执行了两次。
哪一个先行?这取决于操作系统首先选择安排的两个进程中的哪一个。根据操作系统的不同,可能存在趋势,或者可能总是相同,但您不应该依赖于此行为。