ProcessBuilder를 사용하여 Java 응용 프로그램에서 대화식 실행 파일을 실행하려고합니다. 그것은 입력을 받아서 출력을 생성하고 다음 입력을 기다려야합니다. 입력/출력 스트림의 주요 문제점 나는 입력을 보내고 아무것도 얻지 못한다. 여기에 코드입니다 :ProcessBuilder를 사용하여 Java 대화식 프로세스에서 InputStream을 읽는 중
private static Process process;
private static BufferedReader result;
private static PrintWriter input;
process = new ProcessBuilder("compile-lm", lmFile.toString(), " --score yes").redirectErrorStream(true).start();
input = new PrintWriter(new OutputStreamWriter(process.getOutputStream()), true);
input.println(message);
System.out.println(message);
result = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = new String();
while ((line = result.readLine()) != null)
{
/* Some processing for the read line */
System.out.println("output:\t" + line);
}
종료 상태 인 경우 'int es = process.waitFor(); '그리고 무엇이 문제인지를 표시합니다. – zizoujab
@ZiedJaballah 올바른 작업 'input.println (message)'이 끝난 후 종료 상태를 얻으려고했으나 0 정상 종료되었습니다. 문제가있는 곳을 조사 할 수있는 다른 방법이 있습니까? – asadek
명령을 변경하십시오. 코드가 깨끗해진다. 커맨드가 아무것도 반환하지 않기 때문에 출력이 나오지 않을 수도 있습니다. – zizoujab