Я начинаю подпроцесс различными способами - subprocess.call, Popen, os.system.Python subprocess.call/Popen/system issue
Например:
subprocess.call('wine application.exe', shell=True)
Но начинается питон 2 процессов:
/bin/sh -c wine application.exe application.exe
Когда я начинаю это приложение вручную, вызвав в консольном окне wine application.exe
я вижу только application.exe
экземпляр в ps ax
.
Нормально ли это? Я предполагаю, что это нормально, потому что это подпроцесс, и его родитель ждет окончания ребенка. НО, почему это поведение не то же самое, что я запустил приложение с консоли? Где в этом случае родитель скрывается?
Обновление: Я подумал, что это действительно родительский процесс. Если я буду запускать приложение из питона с: subprocess.call('wine application.exe &', shell=True)
он будет иметь такое же поведение, как и в оболочке (потому что оболочки является верно). Таким образом, в этом случае это будет только один экземпляр - тот, который вы вызывали этим вызовом подпроцесса.
Но в любом случае я до сих пор не понимаю, почему существует 2 процесса вместо одного. Invoker - хорошо, но откуда пришел второй процесс? Почему это не работает с одним процессом?