2014-09-10 2 views
2

При использовании 'adb pull ...' вывод отправляется в stderr независимо от успеха. Есть ли причина для этого? Для примера, потянув файл, который там и вытягивать файл, который не существует:Почему adb push/pull перенаправляет STDOUT на 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 
+0

Я на самом деле вижу, что простые вещи, как «ADB» также печать на STDERR – pho79

+1

В краткосрочной перспективе, если вы хотите, чтобы страницы вывода, к примеру, вы можете создать псевдоним, как ADB АДФ = '2 > & 1 ', поэтому команды, как меньше, будут работать как ожидалось – pho79

ответ

-1

У меня такая же проблема с: adb install -r /foo/bar.apk и звук, как adb всегда посылает свой результат на стандартный вывод , просто добавьте 2>&1 в конец, и это решает проблему.

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

2-> & 1 просто перенаправляет канал 2 (стандартная ошибка) и 1 канал (стандартный вывод) в том же месте, что в этом контексте является канал 1 (стандартный выход), а оттуда СВОЙ журнальный файл.

+0

Могу ли я узнать причину понижения? – Equiman

Смежные вопросы