是否可以将由ProcessBuilder创建的一个进程的输出传递给由另一个ProcessBuilder创建的另一个进程?例如,如果我试图执行此shell命令:将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);
,但它会产生不同的结果进行比较时,我直接在shell中运行的脚本。我在哪里做错了?
解决:请参考菲利普·温德勒溶液
您的解决方案可行!谢谢菲利普:我实际上会使用这个代码来调用几个外部应用程序,如chasen和moses(机器翻译工具)。 ls | grep的例子只是为了简化问题,但感谢您的建议:D我会标记问题解决并upvote您的解决方案。 – ndriks 2012-01-08 12:00:58