http://d2.naver.com/helloworld/1113548


http://imcho.tistory.com/38


1. Runtime 클래스

Runtime.exec(); 를 통해서 외부 프로세스를 실행한다.


exec() 메소드를 호출하기 전에 명령어와 해당 독립변수, 환경 변수 설정, 작업 디렉터리 등을 지정한다. 모든 버전의 메소드는 생성된 프로세스를 관리하기 위한 java.lang.Process 오브젝트를 반환하는데, 이는 서브프로세스 및 종료 상태의 인풋 또는 아웃풋 스트림을 얻어낼 수 있도록 해준다.


exec()의 매게변수안에 명령어를 작성하여 실행시키면 명령어대로 실행된다.이에 따른 아웃풋을 읽어드려 출력하면 커맨드창에 출력된다.


하지만 exec()에서는 서브프로세스의 환경변수에 대한 입력이 용이하지않다. 그걸 개선하기위해 ProcessBuilder클래스를 사용한다.



2. ProcessBuilder 클래스

위에서 언급했듯이 환경변수를 조작하는데 더욱 용이하다.

환경변수를 입력하기위해 environment()메소드를 통해 Map을 얻어낸다음 map을 처리한다.


다음과같이 map에 환경변수를 설정하여준다.

--------------

ProcessBuilder processBuilder = new ProcessBuilder( command, arg1, arg2); 

Map<String, String> env = processBuilder.environment(); 

env.put("var1", "value"); 

env.remove("var3");

--------------


환경 변수와 디렉터리가 설정된후 start()를 호출한다.


또한 환경변수를 초기화하기위해 clear()하고 다시 설정할수도있다.



Posted by moyaiori
,