使用Python

时间:2016-08-29 08:57:34

标签: python

我试图通过MQTT命令启动和停止某个设备上的程序,但它并没有真正按照我希望的方式运行..

要开始这个过程,我使用:

p = subprocess.Popen(["sh", "process.sh"])

哪个很好,它启动程序。

在代码中,我尝试使用p.killp.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()

2 个答案:

答案 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