我有一个python脚本,我打开三个可执行文件,如下所示:
Aa=subprocess.Popen([r"..\location\learning\A.exe"]) Bb=subprocess.Popen([r"..\location\learning\new\B.bat"]) Cc=subprocess.Popen([r"..\location\learning\new\B.bat"])
所有这三个文件都打开了。 现在,下一步,我想杀死这三个打开的模块。所以,首先我试图杀死“Aa”如下:
PROCESS_TERMINATE= 1 k = ctypes.windll.kernel32klll handle = k.OpenProcess(PROCESS_TERMINATE, False,Aa.pid) k.TerminateProcess(handle, -1) k.CloseHandle(handle)
但是,在添加这些行后,三个模块“Aa”,“Bb”和“Cc”不会被打开。所以,我想知道一些干净的解决scheme,以便首先所有三个模块被执行,然后而他们自己closures。 至于,我在Windows 64位平台上使用python 2.5,所以善意地build议相应的解决scheme。
subprocess.Popen()
返回的进程有一个terminate()
方法来从Python 2.6以后terminate()
子进程。 要使用它,你将不得不升级你的Python安装或并行安装两个版本的Python。
但更好的方法通常是找出如何告诉这个过程停止和使用它。 当您发送某些标准输入或关闭Popen
创建的管道时,许多进程停止。