конвейерная передача вывода 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);

, но результат отличается от того, когда я запускаю скрипт прямо в оболочке. Где я сделал не так?

Решено: см. Решение Филиппа Вендлера

10
задан Andrew Thompson 4 July 2012 в 06:08
поделиться