【发布时间】:2012-01-05 20:44:17
【问题描述】:
是否可以将 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 解决方案
【问题讨论】:
标签: java runtime.exec