通过单击按钮终止正在运行的子进程
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 -9ps aux | grep /home/pi/strandtest.py | awk -F' ' 'print $2'
) 我确定我在这里遗漏了一些东西。
要运行它,您需要管理员权限,您是否尝试使用 sudo?
在我意识到我需要在提供的解决方案中的“”周围使用“”之后,我让它停止了动画。现在我想弄清楚如何清除动画。我很快就会到达那里。感谢您的帮助以上是关于通过单击按钮终止正在运行的子进程的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows 上使用 Python 终止正在运行的子进程