런타임을 사용하여 Java 프로그램에서 명령 프롬프트 명령을 실행하고 있습니다. 그러나 명령이 반환하는 출력을 얻는 방법을 알지 못합니다.
내 코드는 다음과 같습니다.
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
나는 노력 System.out.println(proc);
했지만 아무것도 반환하지 않았다. 해당 명령을 실행하면 세미콜론으로 구분 된 두 개의 숫자가 반환되어야합니다. 이것을 변수로 인쇄하여 인쇄하려면 어떻게해야합니까?
다음은 현재 사용중인 코드입니다.
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
그러나 출력으로 아무것도 얻지 못하지만 해당 명령을 직접 실행할 때 정상적으로 작동합니다.
pwd && ls
은 단일 파일을 실행하는 것이 아니라 셸에서 파일을 실행할 때/bin/pwd
및/bin/ls
실행 파일을 모두 실행합니다. Java 내에서 이와 같은 작업을 수행하려면 다음과 같은 작업을 수행해야합니다{"/bin/bash","-c", "pwd && ls"}
. 더 이상 질문이 없을 수도 있지만 다른 사람들이 대답 할 수도 있다고 생각했습니다.