我正在尝试从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',而不是有用的退出代码。
我在这里做错了什么?
您应该使用p.wait()
而不是os.waitpid()
。 os.waitpid()
是一个低级api,它对Popen
对象一无所知,因此无法触摸p
。