Java 9 improves Process class by adding new methods and also provides a new interface: ProcessHandle and ProcessHandle.Info to get all the details about the process and its information.
Below is the list of new methods added to Process in Java 9
- boolean supportsNormalTermination(): It can return true if the implementation of the destroy() is to normally terminate the process, else returns false.
- long pid(): It can return the native process ID of the process.
- ProcessHandle toHandle(): It can return a ProcessHandle for the Process.
- Stream children(): It can return a snapshot of the direct children of the process.
- Stream descendants(): It can return a snapshot of the descendants of the process.
- ProcessHandle.Info info(): It can return a snapshot of information about the process.
- CompletableFuture onExit(): It can return a CompletableFuture for the termination of the process.
Example
public class ProcessTest { public static void main(String args[]) { ProcessHandle processHandle = ProcessHandle.current(); ProcessHandle.Info processInfo = processHandle.info(); System.out.println(processHandle.pid()); System.out.println(processHandle.parent()); System.out.println(processInfo.arguments().isPresent()); System.out.println(processInfo.command().isPresent()); System.out.println(processInfo.command().get().contains("tutorialspoint")); System.out.println(processInfo.startInstant().isPresent()); } }
Output
4892 Optional[7788] false true false true