2013-12-17 3 views
0

Я пытаюсь запустить следующую команду, чтобы получить только строку состояния памяти.Java Runtime.getRuntime(). Exec и вертикальная черта

Runtime.getRuntime().exec("free -m | grep 'Mem'"); 

Но он возвращает все линии результата. Команда после вертикальной полосы не обрабатывается. Я также пробую:

Runtime.getRuntime().exec(new String[] { "free", "-m", "|", "grep", "Mem" }); 

И он тоже не работает.

+0

Подсказка: _вертикальный bar_ является __pipe__ и интерпретируется _shell_, а не java. – devnull

+0

http://stackoverflow.com/questions/5928225/how-to-make-pipes-work-with-runtime-exec – assylias

ответ

1

Трубопроводы с "|" возможно только в оболочке, но если вы выполняете runtime.exec(), у вас нет оболочки. Он просто выполняет другой процесс. Поэтому труба просто игнорируется. В вашем случае вы можете решить это относительно просто с помощью регулярного выражения в вашей Java-программе для извлечения результатов.

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