我正在尝试通过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()
解决方法:
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()
标签:python