繁体   English   中英

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

[英]Why does adb push/pull redirect STDOUT to STDERR?

使用“ 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

我也有同样的问题: 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(标准输出)),然后将您的日志文件重定向到同一位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM