对于Python还是一种新东西,但是我认为我最好从一个项目开始学习。
我有一个RPi Zero(树莓派)零头运行,它带有5个物理按钮(A-E)和python库的所谓的按钮垫片。 我想使用这些按钮来为一个小型Internet广播项目运行不同的广播流。
我已经提供了代码示例。
当我运行脚本并按下按钮A时,流开始播放。当我按下按钮B时,另一个流同时播放。如何取消上一个过程?
用例是,有时我会先按B,然后稍后再更改为A,或者相反。
import buttonshim
import subprocess
import vlc
# Button A
@buttonshim.on_release(buttonshim.BUTTON_A)
def button_a(button, pressed):
os.killpg(proc.pid, signal.SIGTERM)
proc=subprocess.Popen(["cvlc", "http://live-icy.gss.dr.dk/A/A03H.mp3.m3u"], shell=False)
# Button B
@buttonshim.on_release(buttonshim.BUTTON_B)
def button_a(button, pressed):
os.killpg(proc.pid, signal.SIGTERM)
proc=subprocess.Popen(["cvlc", "http://live-icy.gss.dr.dk/A/A03H.mp3.m3u"], shell=False)
通过尝试杀死正在运行的子进程,我收到一条错误消息,因为在运行第一个命令时没有proc
。也许我需要一个if
参数来检查是否实际上正在运行任何子进程?还是我应该以不同的方式对待整个项目?