【发布时间】:2014-09-06 14:39:34
【问题描述】:
我正在通过不同的方式启动子进程 - subprocess.call、Popen、os.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 实例。
正常吗? 我的猜测是没关系,因为它是子进程,它的父进程等待子进程完成。但是,为什么这种行为与我从控制台启动应用程序不同?在这种情况下,父母隐藏在哪里?
更新:
我经过深思熟虑,明白这确实是父进程。如果我将从 python 启动应用程序:
subprocess.call('wine application.exe &', shell=True)
它将具有与 shell 中相同的行为(因为 shell 是 true)。
所以在这种情况下,它将只有一个实例 - 您通过此子流程调用调用的实例。
但无论如何我仍然不明白为什么有 2 个进程而不是一个。 Invoker - 好的,但是第二个过程是从哪里来的?为什么它不适用于 1 个进程?
【问题讨论】:
标签: python linux shell subprocess call