如何在Windows中杀死子进程python

mar*_*rsh 5 python

我如何在Windows上杀死进程?

我正在开始这个过程

    self.p = Process(target=self.GameInitialize, args=(testProcess,))
    self.p.start()
Run Code Online (Sandbox Code Playgroud)

我试过了

self.p.kill()
self.p.terminate()
os.kill(self.p.pid, -1)
os.killpg(self.p.pid, signal.SIGTERM)  # Send the signal to all the process groups
Run Code Online (Sandbox Code Playgroud)

错误

Process Object has no Attribute kill
Process Object has no Attribute terminate
Access Denied
Run Code Online (Sandbox Code Playgroud)

我不能用 .join.

Tin*_*rus 10

我必须使用此链接中的此方法进行操作

subprocess.call(['taskkill', '/F', '/T', '/PID',  str(self._active_process.pid)])
Run Code Online (Sandbox Code Playgroud)

这是因为self._active_process.kill()不够


Gam*_*iac 7

在Windows上,os.killpg将无法工作,因为它向进程ID发送信号以终止.现在就是你在Windows上杀死一个进程的方法,而你必须使用win32 API TerminateProcess来终止进程.

因此,您可以通过以下窗口终止进程:

import signal
os.kill(self.p.pid, signal.CTRL_C_EVENT)
Run Code Online (Sandbox Code Playgroud)

如果上述方法不起作用,请尝试signal.CTRL_BREAK_EVENT改为.

  • 我在调用程序中使用多线程和队列,它有时会接收键盘中断而不是子进程——到底是什么? (2认同)

mar*_*rsh 0

os.kill(self.p.pid, -9)
Run Code Online (Sandbox Code Playgroud)

作品。我不确定为什么 -1 返回访问被拒绝错误,但 -9 不会。