Я звоню программам командной строки, связанным трубами. Все это работает на Linux наверняка.
Мой метод:
protected String execCommand(String command) throws IOException {
String line = null;
if (command.length() > 0) {
Process child = Runtime.getRuntime().exec(command);
InputStream lsOut = child.getInputStream();
InputStreamReader r = new InputStreamReader(lsOut);
BufferedReader in = new BufferedReader(r);
String readline = null;
while ((readline = in.readLine()) != null) {
line = line + readline;
}
}
return line;
}
Если я звоню какому-нибудь файлу cat | grep asd , я получаю ожидаемый результат. Но не все команды работают правильно. Например с этим:
cat /proc/cpuinfo | wc -l
или это:
cat /proc/cpuinfo | grep "model name" | head -n 1 | awk -F":" '{print substr($2, 2, length($2))}
метод вернет ноль. Я предполагаю, что эта проблема зависит от команд форматирования вывода, таких как head , tail , wc и т.д. выхода?