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
実際には2回実行しているため、両方の部分が使用されます。
どっちが先?これは、OS が最初にスケジュールするために 2 つのプロセスのどちらを選択するかによって異なります。OSによって傾向があるかもしれませんし、いつも同じかもしれませんが、その振る舞いに依存するべきではありません。