2

我在 Windows 平台上工作。我一直在学习使用 python 启动外部进程的不同方法。使用我自己的示例,我可以:

os.system("C:\mainfolder\menu.exe C:\others\file1.inp C:\others\file2.inp")

或者

os.popen("C:\mainfolder\menu.exe C:\others\file1.inp C:\others\file2.inp")

或者

subprocess.call(["C:\mainfolder\menu.exe","C:\others\file1.inp" "C:\others\file2.inp"])

在哪里:

menu.exe:是我的外部程序。

file1 和 file2:是我的外部程序的输入文件。

以上所有工作都很好,但我找不到终止进程的方法,包括在任何这些情况下的活动窗口,而无需单击启动窗口右上角的关闭图标。但是,如果我在命令提示符下键入 taskkill /im menu.exe,我会管理我要查找的内容。

有没有办法使用 python 获得相同的结果?只是寻找一些简单的东西,因为我不太了解 Python。

我试过:

    os.system("taskkill /im menu.exe") 

但它不会关闭我的外部程序启动的窗口。

4

3 回答 3

1

不要使用 subprocess.call() 包装器,而是尝试Popen从 subprocess 模块实例化一个对象。它的工作方式与 call() 相同,但您会从操作系统获得一个包装低级进程处理程序的对象。这个包装器有一个名为 的方法terminate,它应该可以满足您的需求。

于 2014-11-06T21:17:27.000 回答
0

试试这样:使用subprocess

import subprocess
child = subprocess.Popen(['commad','arg1,'arg2'....],stdout=subprocess.PIPE)
output = child.communicate()   # will give you (stdoutdata,stderrdata)
# if you want to kill this process
child.kill() # sends SIGKILL signal
于 2014-11-06T21:25:17.657 回答
0

保留您启动的任务的所有进程 ID ( PID) 的列表,然后向它们发送终止信号。

顺便说一句 - 小心使用-如果您启动的进程已经完成,它的 PID 可能已被不属于您的东西重用!

于 2014-11-06T21:17:07.763 回答