如何停止子进程?(Python)

如何停止子进程?(Python),python,subprocess,Python,Subprocess,我尝试了terminate()和kill(),但都未能停止我在python代码中启动的子进程 还有别的办法吗 在Windows上使用Python 2.7 我也尝试了以下方法,但没有结果 os.kill(p.pid, signal.SIGTERM) 及 您可以在此处使用os.system('taskkill'):http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/taskkill.mspx?

我尝试了terminate()和kill(),但都未能停止我在python代码中启动的子进程

还有别的办法吗

在Windows上使用Python 2.7

我也尝试了以下方法,但没有结果

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


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

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

代码取自


请注意,如果使用
shell=True
,则PID属于shell,而不是它派生的任何进程。要使用
shell=True
终止子进程,您可以查看

此子进程是启动其他进程的shell脚本吗?我在这里记录了一个类似的问题:如何启动它?它是通过subprocess.Popen启动的。您是否在调用
subprocess.Popen()
时使用
shell=True
?使用TerminateProcess是不好的。您确定在尝试终止该进程时该进程仍在运行吗?
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)
p = psutil.Process(pid)
p.terminate()  #or p.kill()