如何停止子进程?(Python)

0 投票
2 回答
1491 浏览
提问于 2025-04-16 20:21

我试过用terminate()和kill()这两个方法,但都没能成功停止我在Python代码中启动的一个子进程。

还有其他方法吗?

我是在Windows上用Python 2.7。

我也试过以下这些方法,但都没有效果……

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

你可以试试使用 psutil,或者找其他方法来远程结束进程(psutil 是跨平台的,所以代码会更好用):

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

这段代码来自于 如何通过 Python 使用 PID 结束进程?

需要注意的是,如果你使用 shell=True,那么你得到的 PID 是 shell 的 PID,而不是它启动的任何进程的 PID。要结束一个使用 shell=True 启动的子进程,你可以查看 如何结束一个使用 shell=True 启动的 Python 子进程

0

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

撰写回答