에 매달려 :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
이 끝에 도달했는지 여부를 확신 할 수 없다는 사실이 (아마도) 이해합니다. 이 문제를 극복하고 입력 스트림을 올바르게 읽을 수있는 방법이 있습니까? BTW.
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");
은 또한 무한 응답 ... 파워 쉘이 종료되지
그래서 마지막에 'exit'와 같이 sth를 제공해야합니까? – Bober02
대신 PowerShell에서 stdout을 닫을 수 있다고 가정합니다. –