从Python执行子进程而不打开Windows命令提示符

时间:2011-06-17 18:49:30

标签: python windows subprocess

  

可能重复:
  Running a process in pythonw with Popen without a console
  How do I eliminate Windows consoles from spawned processes in Python (2.7)?

我有一个Python程序,它调用一个单独的数字运算程序(用C语言编写)作为子进程多次(使用subprocess.check_call)。它在Linux上运行得很好,除了一件小事之外它在Windows上运行得很好:每次调用子进程时都会创建一个命令提示符窗口,然后在子进程退出时很快就会被销毁。

这根本不会影响计算,但是它非常烦人,因为这个窗口一直闪烁在屏幕上,这使得很难在计算机上做其他事情,因为新的命令提示符窗口可以窃取键盘焦点

如何简单地执行子进程(没有GUI),并阻止创建命令提示符窗口?

2 个答案:

答案 0 :(得分:2)

构建C应用程序时,请将其类型设置为Win32子系统而不是控制台子系统。如果这是预构建的应用程序,则可以使用this tool更改子系统。

答案 1 :(得分:2)

您是如何致电subprocess.check_call()的?如果您传递shell=True,则不应创建窗口,因为这会导致为SW_HIDE属性设置STARTUPINFO.wShowWindow标记。

示例:

subprocess.check_call(["ping", "google.com"], shell=True)