当使用poll()方法(在opensuse中)运行python模块时,终端显示一个返回值None?

2024-04-18 18:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为流行的linux版本创建一个强化工具(RHEL, opensuse、ubuntu等)我目前正在opensuse中测试我的代码 使用zypper包管理器的环境。你知道吗

我有一段代码:

message = subprocess.Popen(["/usr/bin/zypper","-n","install","vlock"],
  stdout=subprocess.PIPE,shell = False) 
details = message.stdout.readlines()
print message.poll()

这将安装包,在本例中是vlock,然后读入 从shell输出,然后打印成功值 可以是0或非零数字。当我在python中运行此代码时 我可以打印消息.poll()或echo$?如果我跑了 命令在解释器之外,我得到一个0表示成功或a 按预期失败时为非零。你知道吗

但是,当我实际从shell运行完整的单元测试脚本时:

sudo ./pkghelper.py  

我打印出消息.poll()应该保存 从完成的进程返回的值与打印的值相同 消息.poll()或echo$?但是,它的值不是 整数为0或非零,我得到的值为零。有人知道为什么吗 python解释器中的值是一个整数,当 运行脚本是没有的?!?!这实际上是一个主要的障碍 继续开发的程序和我能找到的 网上有什么吗


Tags: 代码echo脚本消息messagelinuxstdout整数
1条回答
网友
1楼 · 发布于 2024-04-18 18:15:25

当进程运行时,该值为None,如果退出时没有错误,则为0。由于您正在解释器中调用它,因此进程已经完成并退出,返回代码为0。但是,当您将其作为脚本运行时,python的运行速度会一直快于调用完成的速度(而且它不会等待调用),因此它会得到一个None,表示进程仍在运行。文档解释了这一点。你知道吗

相关问题 更多 >