2016-11-30 5 views
0

Я пытаюсь выполнить следующую команду;Как сделать символ трубы или Grep работать в команде времени выполнения Android?

String cmd = "/system/bin/netstat -"+firstString+" | grep http"; 
Process process = Runtime.getRuntime().exec(cmd); 
Log.d("1:CMD VALUE", cmd); 

Результат журнала 1:CMD VALUE: /system/bin/netstat -a | grep http

Однако выход не получать фильтруется для «HTTP» параметра. Обычный результат «/ system/bin/netstat -a» - это то, что я получаю для команды «/ system/bin/netstat -a | grep http`». Почему это? Это из-за символа трубы или команды grep? Пожалуйста, помогите. Спасибо.

+0

если 'grep' - это двоичный исполняемый файл (программа), то он просто может отсутствовать в системе Android, поскольку Android не является полным Linux. –

+0

http://stackoverflow.com/a/5928316/1904517 – iagreen

+0

@iagreen: Я попробовал массив String до того, как я разместил вопрос, но все же он дает тот же результат, то есть grep не работает или труба не работает Работа?! , Мой массив cmd был {"/ system/bin/netstat", "-" + firstString, "| grep http"} - это выглядит правильно? Влад: Как проверить, отсутствует ли он? – Zac1

ответ

0

Другие ответы на этом сайте были не очень ясными. Вот решение. Вам нужно добавить "/system/bin/sh -c" перед выполнением команды runtime для работы grep. Cheers.