【发布时间】:2013-04-26 21:07:29
【问题描述】:
我在 Java 中使用 ProcessBuilder 来运行 Perl 脚本。当我在打印进程的 InputStream 时运行 Perl 脚本时,Java 程序似乎在 Perl 脚本的持续时间内运行。但是,如果我在 main 中注释掉 getOutPut 方法,Java 程序会非常快地终止,并且 Perl 脚本根本不会运行。为什么会出现这种情况?
private final static String SCENARIO = "scen";
/**
* @param args
*/
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("perl", SCENARIO+".pl");
pb.directory(new File("t:/usr/aman/"+SCENARIO));
try {
Process p = pb.start();
getOutput(p.getInputStream(), true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static List getOutput(InputStream is, boolean print) {
List output = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String s = null;
try {
while ((s = reader.readLine()) != null) {
output.add(s);
if(print){
System.out.println(s);
}
}
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
return null;
}
return output;
}
【问题讨论】:
标签: java perl process processbuilder