【发布时间】:2013-12-10 15:46:58
【问题描述】:
运行以下简单程序:
ProcessBuilder pb = new ProcessBuilder("powershell.exe", "-Command", "dir");
Process p = pb.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
System.out.println("Exit");
永远不会到达“退出” println - 只是无限挂在readLine() 方法上。我知道这(很可能)是由于 powershell 在最后一行没有输出\n 并且readLine 不确定是否已经到达终点。有没有办法解决这个问题并正确读取输入流?顺便提一句。 processbuilder 上的inheritIO 方法导致了同样的问题...
更新
这个:
ProcessBuilder pb = new ProcessBuilder("powershell.exe", "-Command", "dir");
pb.redirectErrorStream(true);
Process p = pb.start();
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
// String line;
// while((line = bufferedReader.readLine()) != null){
// System.out.println(line);
// }
p.waitFor();
System.out.println("Exit");
也无限挂起...
【问题讨论】:
标签: java process processbuilder