java processbuilder 예제

예를 들어 다음과 같이 실행하려는 경우: 작업 디렉토리를 변경하는 것이 유용할 수 있습니다. 다음 예제에서는 이 작업을 수행하는 방법을 살펴보겠습니다. 또한 작업 디렉토리를 변경하는 방법도 살펴보겠습니다. 환경 변수 이름과 값의 외부 형식은 시스템에 따라 다르므로 해당 문자열과 Java의 유니코드 문자열 간에 일대일 매핑이 없을 수 있습니다. 그럼에도 불구하고 Java 코드에 의해 수정되지 않은 환경 변수는 하위 프로세스에서 수정되지 않은 네이티브 표현을 갖습니다. Java 하위 프로세스에 정보를 전달할 때 일반적으로 시스템 속성은 환경 변수보다 선호됩니다. 이 섹션에서는 ProcessBuilder 클래스에서 가장 중요한 방법을 간단히 살펴보겠습니다. 이것은 우리가 나중에 몇 가지 실제 예제로 다이빙 할 때 도움이 될 것입니다 : 시작할 프로세스는 명령 프롬프트입니다, 그래서 우리는 cmd.exe를 전달 ProcessBuilder를 만듭니다. 명령에 대한 입력은 /C dir 및 에코 작업 디르의 예입니다. 현재 디렉토리를 인쇄한 다음 “예제”와 “작업 dir”을 에코합니다. 이 예제에서는 inheritIO를 호출하여 하위 프로세스 IO를 현재 프로세스의 표준 IO로 리디렉션합니다. ProcessBuilder를 만든 후 하위 프로세스의 출력이 콘솔 창에 인쇄되도록 inheritIO를 호출합니다. 하위 프로세스 표준 I/O의 소스와 대상을 현재 Java 프로세스의 소스 및 대상과 동일하도록 지정하려면 inheritIO 메서드를 사용할 수 있습니다.

대부분의 오류 검사는 start() 메서드에 의해 수행됩니다. start()가 실패하도록 개체의 상태를 수정할 수 있습니다. 예를 들어 명령 특성을 빈 목록으로 설정하면 start()가 호출되지 않는 한 예외가 throw되지 않습니다. 프로세스 빌더의 특성을 수정하면 해당 개체의 start() 메서드에서 시작한 프로세스에 영향을 주지만 이전에 시작된 프로세스 또는 Java 프로세스 자체에는 영향을 주지 않습니다. 이 예제는 홈 디렉터리를 프로세스 빌더의 현재 디렉터리로 설정합니다. 홈 디렉토리의 내용을 표시합니다. 이 예제에서는 프로세스의 입력 및 출력을 리디렉션하는 방법을 보여 줍니다. 예제의 끝에서, 당신은 아래 언급 한 배울 것 이다: 이 자습서에서는, 우리는 어떻게 자바 ProcessBuilder API를 완화 하는 방법을 살펴보겠습니다. 다음으로, 우리는 실용적인 예제의 숫자를 살펴했다.

마지막으로 Java 9의 API에 새로 추가된 내용을 살펴보았습니다. Java 버전을 인쇄하려면 원래 예제로 돌아가보겠습니다. 그러나 이번에는 표준 출력 파이프 대신 로그 파일로 출력을 리디렉션해 보겠습니다. 그런 다음 간단한 디렉터리 목록 명령을 실행하고 출력에 기본 하위 디렉터리 및 테스트가 포함되어 있는지 확인합니다. 이 끝에서 두 번째 예제에서는 상속IO() 메서드가 작동하는 것을 볼 수 있습니다. 하위 프로세스 I/O를 현재 프로세스의 표준 I/O로 리디렉션하려는 경우 이 메서드를 사용할 수 있습니다. 다음 예제에서는 작업 환경을 수정 하는 방법을 살펴보겠습니다. 다음은 수정된 작업 디렉토리 및 환경으로 프로세스를 시작하고 로그 파일에 추가될 표준 출력 및 오류를 리디렉션하는 예제입니다.

예를 들어 매번 새 파일을 만드는 대신 로그 파일에 추가하려는 경우: 실제 환경에서는 추가 분석을 위해 로그 파일 내에서 실행 중인 프로세스의 결과를 캡처하려고 할 수 있습니다. 다행히 ProcessBuilder API는 이 예제에서 볼 수 있듯이 정확히 이에 대한 기본 제공 지원을 제공했습니다. Java 9는 ProcessBuilder API에 파이프라인 개념을 도입했습니다.

Share on FacebookPin on PinterestTweet about this on TwitterShare on TumblrShare on Google+Digg this