Возможно ли передать результат одного процесса, созданного ProcessBuilder, другому процессу, созданному другим ProcessBuilder? Например, если я пытаюсь выполнить эту команду оболочки:вывод трубопровода ProcessBuilder в другой ProcessBuilder
ls | grep build.xml
как я должен делать это с ProcessBuilder?
, как @erdinc предложил, я попытался это:
Process process = Runtime.getRuntime().exec("ls");
InputStream is = process.getInputStream();
byte[] buf = new byte[1000];
is.read(buf);
String parameter = new String(buf);
System.out.println("grep build " + parameter);
Process proc2 = Runtime.getRuntime().exec("grep build " + parameter);
InputStream is2 = proc2.getInputStream();
byte[] buf2 = new byte[1000];
is2.read(buf2);
String result = new String(buf2);
System.out.println("proc2 result: " + result);
но он производит другой результат сравнения, когда я запустить скрипт непосредственно в оболочке. Где я ошибался?
Решено: Пожалуйста, смотрите Philipp Wendler решение
Ваше решение работает! спасибо Филипп: D Я действительно буду использовать этот код для вызова нескольких внешних приложений, таких как chasen и moses (инструменты машинного перевода). Ls | Пример grep предназначен только для упрощения вопроса, но спасибо за предложение: D Я постараюсь решить вопрос и решить ваше решение. – ndriks