Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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。这种行为是预期的吗?
该行为实际上是未指定的。
您(可能)知道fork()复制当前流程。在一种情况下,它返回0,在另一种情况下,它返回新进程的 pid。
fork()
0
所以这两个部分都被拿走了,因为你实际上是在执行它两次。
哪个先走?这取决于操作系统选择首先调度的两个进程中的哪一个。根据操作系统的不同,可能会有一种趋势,或者它可能总是相同的,但你不应该依赖这种行为。