【发布时间】:2016-11-15 19:16:09
【问题描述】:
Python 3.4
OS - Raspbian Jessie 在 Raspberry Pi 3
上运行注意:程序“gnutv”没有停止命令。它只有一个计时器选项来停止录制。
我的问题: 我对编程和 Python 还是很陌生(自学/YouTube/教过的书)。我正在编写一个检查系统警报的程序。当出现警报时,它会触发程序“gnutv”开始将视频录制到文件中。那是容易的部分。我可以让程序启动,并使用录制视频
Popen(["gnutv", "-out", "file", str(Videofile), str(Channel)])
程序在视频录制期间继续监控警报输入,以便知道何时停止录制。但是当警报不再存在时,我无法让它停止录制。我尝试使用 kill()、terminate() 和其他方法都没有成功(所有返回的错误都表明我不知道如何使用这些更复杂的命令)。 但是,我可以通过切换到终端并使用查找 PID 来终止进程
pidof 'gnutv'
然后用
杀死它kill PID#
那么我怎样才能返回我从终端获得的 PID 值 以便我可以将 kill 命令 发送到 终端(再次使用 Popen)?
即 - Popen(['kill', 'PID#'])
【问题讨论】:
-
您可以尝试只运行
killall gnutv(前提是您不介意杀死每个 GnuTV 实例),因此您不需要捕获终端输出。 -
奇怪的是,我在退出 StackExchange 5 分钟后发现了这个解决方案……哈哈。感谢您的帮助:)
标签: python python-3.x process popen kill