ProcessBuilder — 운영 체제 프로세스 생성 클래스

ProcessBuilder — 운영 체제 프로세스 생성 클래스

ProcessBuilder는 운영 체제 프로세스를 만드는 데 사용되는 클래스예요. 각 ProcessBuilder 인스턴스는 프로세스 속성(attribute) 모음을 관리해요. start() 메서드는 해당 속성으로 새 Process 인스턴스를 만들어요. 같은 인스턴스에서 start()를 반복 호출해 동일하거나 연관된 속성을 가진 새 하위 프로세스(subprocess)를 만들 수 있어요. startPipeline 메서드를 호출하면 각 프로세스의 출력을 다음 프로세스로 직접 전달하는 파이프라인을 만들 수 있어요. 각 프로세스 빌더는 다음 속성을 관리해요: 명령(command), 환경(environment), 작업 디렉터리(working directory), 표준 입력 소스, 표준 출력·오류 대상.

출처: Java API Reference

본문

public ProcessBuilder(List<String> command)

지정된 운영 체제 프로그램과 인자를 갖는 프로세스 빌더를 만들어요. 명령 리스트의 복사본을 만들지 않으므로, 이후 리스트를 수정하면 프로세스 빌더에 반영돼요.

public ProcessBuilder(String... command)

가변 인자로 프로그램과 인자를 지정해 프로세스 빌더를 만들어요. 편의 생성자로, 동일한 문자열을 담은 리스트를 만들어 설정해요.

public ProcessBuilder command(List<String> command) / command(String... command) — 프로세스 빌더의 프로그램과 인자를 설정해요.

public List<String> command() — 이 프로세스 빌더의 운영 체제 프로그램과 인자를 반환해요. 반환된 리스트는 복사본이 아니에요.

public Map<String,String> environment() — 이 프로세스 빌더의 환경을 나타내는 문자열 맵 뷰를 반환해요. 프로세스 빌더를 만들면 환경이 현재 프로세스 환경의 복사본(System.getenv())으로 초기화돼요.

public File directory() / directory(File directory) — 작업 디렉터리를 반환하거나 설정해요. null이면 현재 프로세스의 작업 디렉터리를 사용한다는 뜻이에요.

public ProcessBuilder redirectInput(ProcessBuilder.Redirect source) — 표준 입력 소스를 설정해요. Redirect.PIPE(기본값)이면 파이프를 통해 부모가 입력을 제공해요.

public ProcessBuilder redirectOutput(Redirect destination) / redirectError(Redirect destination) — 표준 출력·오류 대상을 설정해요. 파일로 리디렉션하는 redirectOutput(File) 편의 메서드도 있어요.

public ProcessBuilder.Redirect redirectInput() / redirectOutput() / redirectError() — 현재 리디렉션 설정을 반환해요.

public ProcessBuilder inheritIO() — 하위 프로세스의 표준 입출력을 현재 자바 프로세스와 동일하게 설정하는 편의 메서드예요.

public boolean redirectErrorStream() — 표준 오류를 표준 출력과 병합할지 여부를 반환해요.

public ProcessBuilder redirectErrorStream(boolean redirectErrorStream) — 표준 오류 병합 여부를 설정해요. true면 파이프를 이용해 하위 프로세스의 오류 출력이 표준 출력과 합쳐져요.

public Process start() throws IOException — 이 프로세스 빌더의 속성을 사용해 새 프로세스를 시작해요. command(), directory(), 환경, 리디렉션 설정을 반영해 프로세스를 실행해요. 시작에 실패하면 IOException을 던져요.

public static List<Process> startPipeline(List<ProcessBuilder> builders) throws IOException — 각 ProcessBuilder에 대해 Process를 시작해, 표준 출력과 입력 스트림으로 연결된 프로세스 파이프라인을 만들어요. 각 프로세스는 자신의 ProcessBuilder 속성을 사용해요.

더 알아보기 (Learn more)