./src/share/classes/java/lang/Process.java

Print this page

        

@@ -24,10 +24,13 @@
  */
 
 package java.lang;
 
 import java.io.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
  * The {@link ProcessBuilder#start()} and
  * {@link Runtime#exec(String[],String[],File) Runtime.exec}

@@ -73,10 +76,11 @@
  * to create a {@code Process}.
  *
  * @since   JDK1.0
  */
 public abstract class Process {
+
     /**
      * Returns the output stream connected to the normal input of the
      * subprocess.  Output to the stream is piped into the standard
      * input of the process represented by this {@code Process} object.
      *

@@ -260,6 +264,46 @@
             return false;
         } catch(IllegalThreadStateException e) {
             return true;
         }
     }
+    
+    /**
+     * Returns the process id of the subprocess
+     * 
+     * @return the process id or -1 if the process is not alive
+     * @since 1.8
+     */
+    public abstract int getPid();
+
+    /**
+     * Returns the process id of the current process.
+     * 
+     * @return the process id of the current process.
+     * @since 1.8
+     *
+     **/
+    public static native int getCurrentPid();
+    
+    public abstract String getProcessName(int pid);
+
+    /**
+     * @return the process name of the current process.
+     * @since 1.8
+     */
+    public String getCurrentProcessName() {
+        return getProcessName( getCurrentPid() );
+    }
+
+    /**
+     * @return the process name of this process or null if no longer live
+     * @since 1.8
+     */
+    public String getProcessName() {
+        int pid = getPid();
+        if (pid >=0) {
+            return getProcessName( getPid() );
+        } else {
+            return null;
+        }
+    }
 }