是否可以将由ProcessBuilder创建的一个进程的输出传递给由另一个ProcessBuilder创建的另一个进程?例如,如果我正在尝试执行此shell命令:
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);
但是与我直接在shell中运行脚本时产生了不同的结果。我错在哪里了?
已解决:请参考Philipp Wendler的解决方案。