ProcessHandle interface allows us to perform some actions, and check the state of a process. It provides the process’s native pid, start time, CPU time, user, parent process, and descendants. We can get access to a parent process by calling the parent() method, and the return value is Optional. It is empty if the child process doesn't have a parent or if the parent is not available.
Syntax
Optional<ProcessHandle> parent()
Example
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(); } } }
In the above example, a "notepad" application will be launched, and also prints the parent process native PID.
Output
Parent Process Native PID : 7108