我以不同的方式啓動子進程 - subprocess.call,Popen,os.system。Python subprocess.call/Popen/system問題
例如:
subprocess.call('wine application.exe', shell=True)
但是Python啓動2個進程:
/bin/sh -c wine application.exe application.exe
當我通過調用控制檯窗口wine application.exe
手動啓動該應用程序,我看到ps ax
只有application.exe
實例。
這是正常的嗎? 我的猜測是可以的,因爲它是子過程,它的父母等待孩子完成。但是,爲什麼這種行爲與我從控制檯啓動應用程序不一樣?在這種情況下,父母隱藏?
更新: 我一直認爲,這是真正的父母過程。如果我將蟒蛇啓動應用程序有: subprocess.call('wine application.exe &', shell=True)
它將具有相同的行爲在外殼(因爲外殼是真)。 所以在這種情況下,它只會有一個實例 - 這個子進程調用所調用的實例。
但無論如何,我仍然不明白爲什麼有2個進程,而不是簡單的一個。 Invoker - 好的,但第二個過程來自哪裏?爲什麼它不適用於一個進程?