ProcessBuilder는 두 개 이상의 명령어를 한번에 수행할 수 없다. "&&" 를 사용하여 시도해보았지만 실패했다. 하나의 명령어당 하나의 프로세스를 생성하기 때문에 두개의 명령어를 실행하려면 두 개의 ProcessBuilder를 만들어줘야 한다. 또한 두 개를 실행 할 때 첫번째 프로세스의 return값을 받은 뒤 두번째를 실행하기 위해서는 if (p1.waitFor() == 0) 이라는 조건을 걸어줘야 한다. 구현한 코드는 다음과 같다. public synchronized void Cmd() throws IOException, InterruptedException { List javacCmd = new ArrayList(); javacCmd.add("javac"); javacCmd.add("t..
Java를 이용해서 프로그램 실행할 때 절대경로를 입력하고 실행하려 했으나 계속해서 수행되지 않길래 문제점을 찾아보니 디렉토리를 변경하는 cd 명령어는 쉘 내장 명령어이기 때문에 별개의 실행파일로 존재하지 않는다고한다. export 또한 위와 같다. 따라서 ProcessBuilder를 사용한다고 하면 ProcessBuilder.directory()를 사용하여 해당 명령어를 수행할 path를 지정해주면 된다. public synchronized void callYCSBCmd() throws IOException, InterruptedException { String path = "/home/sb/YCSB"; List runCmd = new ArrayList(); runCmd.add("./bin/ycsb")..

**윈도우 환경에서** JAVA 프로그램을 이용해서 외부 프로그램 실행을 해야할 경우가 있어서 ProcessBuilder를 이용해서 테스트를 해봤는데 cmd를 띄웠을 때 초기 메세지만 뜨고 명령어 인식이 안되었다. public void Cmd() throws IOException { String[] cmd = new String[] {"cmd", "dir"}; Process process = null; String str = null; try { process = new ProcessBuilder(cmd).start(); BufferedReader stdOut = new BufferedReader(new InputStreamReader(process.getInputStream())); while((str..