Running следующую простую программу:ProcessBuilder - висит на методе ReadLine()
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
не уверен, достигнут ли конец или нет. Есть ли способ преодолеть эту проблему и правильно прочитать входной поток? КСТАТИ. inheritIO
метод на ProcessBuilder привело к тому же вопросу ...
UPDATE
Это:
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");
висит Также бесконечно ...
Так что мне нужно предоставить sth как 'exit' в конце? – Bober02
Я полагаю, вы можете закрыть stdout вместо этого (из PowerShell). –