티스토리 뷰

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();
		}
	}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함