Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 Process API에서 부모(상위) 프로세스를 가져오는 방법

ProcessHandle 인터페이스란?

Java 9에서 도입된 ProcessHandle 인터페이스를 사용하면 운영체제 프로세스에 대한 다양한 작업을 수행하고 상태를 확인할 수 있습니다. 이 인터페이스는 프로세스의 고유 PID, 시작 시간, CPU 사용 시간, 사용자, 부모 프로세스, 그리고 자식 프로세스(descendants) 등의 정보를 제공합니다.

특히 부모 프로세스에 접근하려면 parent() 메서드를 호출하면 되며, 반환 타입은 Optional<ProcessHandle>입니다. 만약 자식 프로세스에 부모가 없거나 부모 프로세스에 접근할 수 없는 경우에는 빈 Optional이 반환됩니다.

문법(Syntax)

Optional<ProcessHandle> parent()

예제 코드

import java.io.*;

public class ParentProcessTest {
    public static void main(String args[]) {
        try {
            Process notepadProcess = new ProcessBuilder("notepad.exe").start();
            ProcessHandle parentHandle = notepadProcess.toHandle().parent().get();
            System.out.println("Parent Process Native PID: " + parentHandle.pid());
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

코드 설명

  • ProcessBuilder: 외부 프로그램인 메모장(notepad.exe)을 실행하는 데 사용됩니다.
  • toHandle(): Process 객체를 ProcessHandle 객체로 변환합니다.
  • parent(): 현재 프로세스의 부모 프로세스를 Optional<ProcessHandle> 형태로 반환합니다.
  • get(): Optional 객체에서 실제 ProcessHandle 값을 꺼냅니다.
  • pid(): 부모 프로세스의 고유 PID를 출력합니다.

위 예제를 실행하면 메모장 애플리케이션이 시작되며, 동시에 부모 프로세스의 고유 PID가 콘솔에 출력됩니다.

실행 결과(Output)

Parent Process Native PID : 7108