모던 프로세스 API
ProcessHandle로 OS 프로세스를 검사하고 관리합니다.
코드 비교
✕ Java 8
Process p = Runtime.getRuntime()
.exec("ls -la");
int code = p.waitFor();
// no way to get PID
// no easy process info
✓ Java 9+
ProcessHandle ph =
ProcessHandle.current();
long pid = ph.pid();
ph.info().command()
.ifPresent(IO::println);
ph.children().forEach(
c -> IO.println(c.pid()));
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
전체 정보
PID, 명령어, 인수, 시작 시간, CPU 사용률에 접근합니다.
프로세스 트리
부모, 자식, 후손 프로세스를 탐색합니다.
모니터링
onExit()가 비동기 모니터링을 위한 CompletableFuture를 반환합니다.
이전 방식
Runtime.exec()
모던 방식
ProcessHandle
JDK 버전
9
난이도
중급
JDK 지원
모던 프로세스 API
사용 가능
JDK 9 (2017년 9월) 이후 널리 사용 가능
동작 원리
ProcessHandle은 PID, 프로세스 정보(명령어, 인수, 시작 시간, CPU 사용률), 부모/자식 관계, 프로세스 종료 기능을 제공합니다. 더 이상 문서화되지 않은 Process 내부를 사용할 필요가 없습니다.
관련 문서