通过单击按钮终止正在运行的子进程

Posted

技术标签:

【中文标题】通过单击按钮终止正在运行的子进程【英文标题】:Kill a running subprocess with a button click 【发布时间】:2019-11-07 08:14:34 【问题描述】:

我正在运行 strandtest.py 为 django 服务器上的 neo 像素矩阵供电。

单击按钮运行程序

我想再按一下按钮来杀死它。

我已经阅读了许多不同的解决方案,但我无法按照说明进行操作。程序运行时我可以执行另一个子进程命令吗?

这就是我启动程序的方式

import subprocess

def test(request):
    sp = subprocess.Popen('sudo python /home/pi/strandtest.py', shell=True)
    return HttpResponse()

我想杀死进程并清除矩阵。

【问题讨论】:

This question seems related 请注意,如果杀死是对用户与您的 html 交互的响应,那么您将需要存储对创建的进程的引用,该引用可以从另一个视图中的代码访问。当视图中响应“kill”按钮的代码执行时,您可能需要存储进程 ID 以便能够检索实际进程 【参考方案1】:

您可以尝试使用 subprocess.Popen 运行以下命令:

kill -9 `ps aux | grep /home/pi/strandtest.py | awk -F' ' 'print $2'`

kill -9 - 会杀死你的进程

ps aux 与 grep 结合 - 只查找您需要的进程

awk - 只获取该进程的 id

【讨论】:

我无法让它工作。 subprocess.Popen(kill -9 ps aux | grep /home/pi/strandtest.py | awk -F' ' 'print $2') 我确定我在这里遗漏了一些东西。 要运行它,您需要管理员权限,您是否尝试使用 sudo? 在我意识到我需要在提供的解决方案中的“”周围使用“”之后,我让它停止了动画。现在我想弄清楚如何清除动画。我很快就会到达那里。感谢您的帮助

以上是关于通过单击按钮终止正在运行的子进程的主要内容,如果未能解决你的问题,请参考以下文章

创建一个不是创建进程子进程的新进程

无法在 Windows 上使用 Python 终止正在运行的子进程

终止正在运行的子进程调用

Javascript 进程冻结 HTML 输入元素

在pyqt5中退出GUI时终止正在运行的进程的正确方法是什么?

Shell脚本入门 07:进程与信号