如何停止子进程?(Python)
我试过用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