【问题标题】:Why does python subprocess.Popen launch a subprocess through cmd.exe?python subprocess.Popen为什么会通过cmd.exe启动子进程?
【发布时间】:2011-12-24 18:00:25
【问题描述】:

我这样调用子进程:

command = 'c:\somepath\myexe.exe'

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

p = subprocess.Popen(command, shell=False, startupinfo=startupinfo)

似乎不是直接启动myexe.exe,而是通过cmd.exe。我可以在这里避免 cmd.exe 吗?

【问题讨论】:

  • 是什么让你认为它使用cmd?它肯定不会。
  • 你的意思是|=,而不是!=。一种是“按位或”赋值,一种是“不等于”比较。
  • 您可能看到了启动 python 脚本的 cmd 进程。
  • 我只是看了一下源代码。 Python 部分仅在 shell=True (1) 时查找 cmd.exe,而 C 部分直接使用 CreateProcess() 生成进程 (2)
  • 好吧,如果这就是你所做的一切,那不是 Python 的错。也许 myexe.exe 正在这样做。 Process Explorer 有助于查看进程树。尝试在运行脚本时查看它。

标签: python windows subprocess


【解决方案1】:

如果您使用的是 Python 2.7 - 请使用 subprocess._subprocess.STARTF_USESHOWWINDOW 而不是 subprocess.STARTF_USESHOWWINDOW。我想这会解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    相关资源
    最近更新 更多