我试图通过MQTT
命令启动和停止某个设备上的程序,但它并没有真正按照我希望的方式运行..
要开始这个过程,我使用:
p = subprocess.Popen(["sh", "process.sh"])
哪个很好,它启动程序。
在代码中,我尝试使用p.kill
或p.terminate
杀死/终止程序,但它会返回代码:
p.terminate()
UnboundLocalError: local variable 'p' referenced before assignment
我正在使用的代码是我自己的代码,如下所示:
def on_message(client, userdata, msg):
if msg.payload == "start":
p = subprocess.Popen(["sh", "stream.sh"])
if msg.payload == "stop":
p.terminate()
答案 0 :(得分:2)
p = None
def on_message(client, userdata, msg):
global p
if msg.payload == "start":
p = subprocess.Popen(["sh", "stream.sh"])
if msg.payload == "stop" and p:
p.terminate()
答案 1 :(得分:1)
您必须将p定义为全局
def on_message(...):
global p