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

时间:2014-09-10 09:36:20

标签: android adb

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

1 个答案:

答案 0 :(得分:-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的相同位置   (标准输出),以及日志文件。