如何停止子进程? (蟒蛇)

时间:2011-06-27 03:31:24

标签: python subprocess

我已尝试使用terminate()和kill(),但两者都无法停止我在python代码中启动的子进程。

还有其他办法吗?

在使用Python 2.7的Windows上

我也试过以下但没有结果...

os.kill(p.pid, signal.SIGTERM)

import ctypes
PROCESS_TERMINATE = 1
handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, theprocess.pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)

2 个答案:

答案 0 :(得分:0)

你可以在这里使用os.system('taskkill'):http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/taskkill.mspx?mfr = true

答案 1 :(得分:0)

尝试使用 psutil 或其他方式远程终止进程本身(psutil 是跨平台的,因此代码更好):

p = psutil.Process(pid)
p.terminate()  #or p.kill()

代码取自 How to terminate process from Python using pid?

请注意,如果使用 shell=True,PID 是 shell 的,而不是它产生的任何进程。要使用 shell=True 终止子进程,您可以查看 How to terminate a python subprocess launched with shell=True