python - 如何在 python 中执行非阻塞脚本并获取其返回码?
问题描述
我正在尝试从 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 进程运行时对其进行监控。
但是,最后一个命令只返回“无”而不是有用的退出代码。
我在这里做错了什么?
解决方案
您应该使用p.wait()
而不是os.waitpid()
. os.waitpid()
是一个低级 api,它对对象一无所知,Popen
因此无法触摸p
。
推荐阅读
- windows - 如何请求 Windows 防火墙的 Windows 安全警报?
- python - 使用python Selenium循环遍历span元素的问题
- .net - .NET WebClient .DownloadFileAsync 和 .DownloadFile 什么都不做,也不抛出异常
- c++ - 错误:调用类 'std::__1::__wrap_iter 的私有构造函数
' - android - 2021年如何在kotlin中上传多个文件(webview)?
- java - 通知在时间选择器中未选择的时间关闭
- mysql - 如何正确使用mysql DISTINCT?
- c++ - 无法将指针分配给模板派生类
- python - 我们如何与通过不同列表引用的列表进行交互?
- kotlin - 在 Kotlin 中输入