티스토리 뷰
ProcessBuilder는 두 개 이상의 명령어를 한번에 수행할 수 없다.
"&&" 를 사용하여 시도해보았지만 실패했다.
하나의 명령어당 하나의 프로세스를 생성하기 때문에 두개의 명령어를 실행하려면
두 개의 ProcessBuilder를 만들어줘야 한다.
또한 두 개를 실행 할 때 첫번째 프로세스의 return값을 받은 뒤 두번째를 실행하기 위해서는
if (p1.waitFor() == 0) 이라는 조건을 걸어줘야 한다.
구현한 코드는 다음과 같다.
public synchronized void Cmd() throws IOException, InterruptedException {
List javacCmd = new ArrayList();
javacCmd.add("javac");
javacCmd.add("test.java");
List runCmd = new ArrayList();
runCmd.add("java");
runCmd.add("test");
ProcessBuilder javacBuilder = null;
Process pjavac = null;
ProcessBuilder javaBuilder = null;
Process pjava = null;
String str1 = null;
String str2 = null;
try {
pjavac = new ProcessBuilder(javacCmd).start();
BufferedReader stdOut = new BufferedReader(new InputStreamReader(pjavac.getInputStream()));
while((str1 = stdOut.readLine()) != null) {
System.out.println(str1);
}
if (pjavac.waitFor() == 0) {
pjava = new ProcessBuilder(runCmd).start();
BufferedReader stdOut2 = new BufferedReader(new InputStreamReader(pjava.getInputStream()));
while((str2 = stdOut2.readLine()) != null) {
System.out.println(str2);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
'JAVA' 카테고리의 다른 글
Java로 외부프로그램 실행 (리눅스 cd 명령어 적용하기) (0) | 2019.04.10 |
---|---|
Java로 외부 프로그램 실행 및 확인하기 (ProcessBuilder) (0) | 2019.04.09 |