2015-12-15 68 views
2

我有一个批处理文件运行一个基于python的应用程序不断读取消息。我有python脚本,它在超时时间后关闭应用程序并执行剩余代码。如何在批处理文件在python中执行后关闭命令提示符窗口?

我使用Subprocess.Popen批处理文件运行和终止()调用终止,但Cmd窗口仍在OPen。它不关闭?

而代码没有执行直到窗口关闭。我该如何强行关闭cmd?

+0

脚本直接? – eryksun

+0

这不是一个“cmd”窗口。它是由conhost.exe托管的控制台窗口。在所有附加的流程退出之前它不会关闭。你正在杀死cmd.exe,但子python.exe进程也被连接到控制台。你甚至需要控制台窗口吗?尝试运行设置为“CREATE_NO_WINDOW”或“DETACHED_PROCESS”的子进程[使用'creationflag'](http://stackoverflow.com/a/7006424)。 – eryksun

回答

1

您可以使用psutil

并专门Process.terminate()功能。

可以说你的命令提示符窗口的名称是“的MyScript”

for proc in psutil.process_iter(): 
    if proc.name() == "myscript": 
     proc.terminate() 

或者你可以你为什么要使用批处理文件,而不是运行的Python运行另一个命令,例如taskkill

taskkill /F /T /IM myscript 
+0

我正在使用此代码来处理进程:'def kill(proc_pid): process = psutil.Process(proc_pid) for process in process.get_children(recursive = True): proc.kill() process.kill ()' –

+0

和?它应该工作,如果你能得到正确的PID。请注意,如果将shell参数设置为True,则这是生成的shell的进程ID。你应该对这是如何工作做一点研究。或者你可以使用psutil来产生进程,并杀死它。 –

相关问题