我可以关闭在Python中用subprocess.Popen打开的CMD窗口吗?

我有一个程序,需要在新的CMD中运行小任务.
例如:

def main()
    some code
    ...
    proc = subprocess.Popen("start.bat")
    some code...
    proc.kill()

子进程,Popen打开一个新的cmd窗口并在其中运行“ start.bat”.
proc.kill()终止进程,但不关闭cmd窗口.
有没有办法关闭此cmd窗口?

我考虑过命名打开的cmd窗口,以便可以使用以下命令将其杀死:

/taskkill /f /im cmdName.exe

如果没有,您有什么建议吗?

编辑,添加了最小,完整和可验证的示例:

a.py:

import subprocess,time
proc = subprocess.Popen("c.bat",creationflags=subprocess.CREATE_NEW_CONSOLE)
time.sleep(5)
proc.kill()

b.py

while True:
    print("IN")

蝙蝠

python b.py

解决方法:

这是子进程运行时所期望的.您只是在杀死.bat进程.

您可以使用psutil(第三方,使用pip install psutil进行安装)来计运算符进程&杀死他们,就像这样:

import subprocess,time,psutil
proc = subprocess.Popen("c.bat",creationflags=subprocess.CREATE_NEW_CONSOLE)
time.sleep(5)

pobj = psutil.Process(proc.pid)
# list children & kill them
for c in pobj.children(recursive=True):
    c.kill()
pobj.kill()

用您的示例进行测试,该窗口在5秒钟后关闭

上一篇:Python中调用Linux命令并获取返回值


下一篇:python-在subprocess.Popen中,bufsize应用于哪个文件?