Process API Updates in Java

By Process API, we can perform any operation related to a process.

Suppose if we want the process id of current running process, or we want to create a new process, or want to destroy already running process, or want to find the child and parent processes of current running process, or if we want to get any information regarding a process, then we can use Process API updates.

Java 9 Process API Updates: –



  • Some new methods are added to the Process class present in java.lang package.
    The process class is an old class in Process API, only some methods like, pid(), info() etc are added in java 9.
  • Methods like startPipeline() are added to ProcessBuilder class which is alredy present in old java versions.
  • ProcessHandle(I) : This is a new interface added in java 9. It is used to handle a process.
  • ProcessHandle.Info(I): It is an innner interface, it provides all the information related to a process.
  • Note: –
    All this are present in java.lang package and hence we don’t need to import anything.

ProcessHandle(I): –

    To create ProcessHandle object : –

  1. To get ProcessHandle object of current running process:

    ProcessHandle ph = ProcessHandle.current();
  2. To get ProcessHandle of the given process object:

    ProcessHandle ph = p.toHandle(); //p is a process object
  3. To get ProcessHandle object from a given process ID:

    Optional obj = ProcessHandle.of(PID);
    ProcessHandle ph = obj.get();

    //getting process handle object
    Here the return type of ProcessHandle object is optional because the process may or may not exist.
    If the process exist then we will get its ProcessHandle object otherwise we won’t get its ProcessHandle object.

filter_none

edit
close

play_arrow

link
brightness_4
code

public class Demo {
  
    public static void main(String[] args)
    {
        ProcessHandle ph = ProcessHandle.current();
        long id = obj.pid();
        System.out.println("Id of the current process is : " + id);
    }
}

chevron_right


Id of the current process is : 5420

ProcessHandle.Info(I): –
Info is an inner interface present inside ProcessHandle interface.

We can get complete information of the given or current running process.

To create ProcessHandle.Info object: –
For this, first we need to create ProcessHandle object and then we will create ProcessHandle.Info object.

ProcessHandle ph = ProcessHandle.current();
ProcessHandle.Indo pinfo = ph.info();

Methods in ProcessHandle.Info(I): –

  1. user(): –
    returns the user of the current process.

    Optional o = info.user();
    System.out.println("User is : "+o.get());
    
  2. command(): –
    returns the command by which the process is started.

    Optional o = info.command();
    System.out.println("Command is : "+o.get());
    
  3. startInstant(): –
    returns the time at which the current process started.

    Optional o = info.startInstant();
    System.out.println("Time of process start is : "+o.get());
    
  4. totalCpuDuration(): –
    returns the total CPU duration of the current process.

    Optional o = info.totalCpuDuration();
    System.out.println("Total CPU duration is : "+o.get());
    

Example: –

filter_none

edit
close

play_arrow

link
brightness_4
code

public class Demo {
  
    public static void main(String[] args)
    {
        ProcessHandle ph = ProcessHandle.current();
        ProcessHandle.Info pinfo = ph.info();
        System.out.println("Complete process information is :" + pinfo);
        System.out.println("User of the process is : " + pinfo.user().get());
        System.out.println("Command used is : " + pinfo.command().get());
        System.out.println("Time of process starting is : " + pinfo.startInstant().get());
        System.out.println("Total CPU Duration is : " + pinfo.totalCpuDuration().get());
    }
}

chevron_right




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.