为什么 adb 推/拉将 STDOUT 重定向到 STDERR?

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

使用“adb pull ...”时,无论成功与否,输出都会发送到 stderr。这有什么原因吗?例如,拉取一个存在的文件并拉取一个不存在的文件:

当我跑步时:

adb pull /data/data/good_file.txt /tmp`

我得到以下信息:

stdout:
stderr: 0 KB/s (13 bytes in 0.078s)

(即没有标准输出)

然后当我跑步时:

adb pull /data/data/bad_file.txt /tmp

我得到以下信息:

stdout:
stderr: remote object '/data/bad_file.txt' does not exist

下面的程序用于生成上述结果:

from subprocess import Popen
cmd = "adb pull /data/data/good_file.txt /tmp"
p = Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print cmd
print "stdout: " + out
print "stderr: " + err
android adb
2个回答
0
投票

JFYI,随着最新版本的 ADB 平台工具 v35.0.2(2024 年 7 月),此问题再次出现。 enter image description here


-1
投票

我有同样的问题:

adb install -r /foo/bar.apk
并且听起来像
adb
总是将他的结果发送到stderr,只需在末尾添加
2>&1
即可解决问题。

cmd = "adb pull /data/data/good_file.txt /tmp 2>&1"

2>&1 只是重定向通道 2(标准错误)和通道 1 (标准输出)到与此上下文中的通道 1 相同的位置 (标准输出),然后是您的日志文件。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.