Listing all processes

Listing all the processes is slightly different from listing descendants and children. The method allProcess() is static and returns Stream of handles of all processes that are active in the operating system at the time of execution.

The following sample code prints the process commands to the console that seem to be Java processes:

import java.lang.ProcessHandle.Info;

public class ProcessLister {
private static void out(String format, Object... params) {
System.out.println(String.format(format, params));
}

private static boolean looksLikeJavaProcess(Info info) {
return info.command().isPresent() && info.command().get().
toLowerCase().indexOf("java") != -1;
}

public static void main(String[] args) {
ProcessHandle.allProcesses().map(ProcessHandle::info).
filter(info -> looksLikeJavaProcess(info)).
forEach((info) -> System.out.println(info.command().
orElse("---")));
}
}

The output of the program lists all the process commands that have the string java inside, shown as follows:

Your actual output may, of course, be different.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset