簡體   English   中英

使用Python啟動和停止子進程

[英]Starting and stopping subprocess with Python

我試圖通過MQTT命令啟動和停止設備上的程序,但它並沒有按照我希望的方式運行。

要開始這個過程,我正在使用:

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

哪個很好,它啟動程序。

在代碼的p.kill行,我試圖用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()
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()

您必須將p定義為全局

def on_message(...):
    global p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM