如何在python中执行非阻塞脚本并获取其返回代码?

问题描述 投票:0回答:1

我正在尝试从python执行非阻塞bash脚本并获取其返回代码。到目前为止,这是我的功能:

def run_bash_script(script_fullname, logfile):
    my_cmd = ". " + script_fullname + " >" + logfile +" 2>&1"
    p = subprocess.Popen(my_cmd, shell=True)
    os.waitpid(p.pid, 0)
    print(p.returncode)

如您所见,所有输出都重定向到一个日志文件,我可以在bash进程运行时对其进行监视。

但是,最后一条命令仅返回'None',而不是有用的退出代码。

我在这里做错了什么?

python bash subprocess
1个回答
0
投票

您应该使用p.wait()而不是os.waitpid()os.waitpid()是一个低级api,它对Popen对象一无所知,因此无法触摸p

© www.soinside.com 2019 - 2024. All rights reserved.