Class ProcessTree

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static boolean enabled
      Flag to control this feature.
      protected java.util.Map<java.lang.Integer,​ProcessTree.OSProcess> processes
      To be filled in the constructor of the derived type.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      static ProcessTree get()
      Gets the ProcessTree of the current system that JVM runs in, or in the worst case return the default one that's not capable of killing descendants at all.
      ProcessTree.OSProcess get​(int pid)
      Gets the process given a specific ID, or null if no such process exists.
      abstract ProcessTree.OSProcess get​(java.lang.Process proc)
      Try to convert Process into this process object or null if it fails (for example, maybe the snapshot is taken after this process has already finished.)
      java.util.Iterator<ProcessTree.OSProcess> iterator()
      Lists all the processes in the system.
      void killAll​(java.lang.Process proc, java.util.Map<java.lang.String,​java.lang.String> modelEnvVars)
      Convenience method that does killAll(Map) and ProcessTree.OSProcess.killRecursively().
      abstract void killAll​(java.util.Map<java.lang.String,​java.lang.String> modelEnvVars)
      Kills all the processes that have matching environment variables.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Field Detail

      • processes

        protected final java.util.Map<java.lang.Integer,​ProcessTree.OSProcess> processes
        To be filled in the constructor of the derived type.
      • enabled

        public static boolean enabled
        Flag to control this feature.

        This feature involves some native code, so we are allowing the user to disable this in case there's a fatal problem.

        This property supports two names for a compatibility reason.

    • Method Detail

      • get

        public final ProcessTree.OSProcess get​(int pid)
        Gets the process given a specific ID, or null if no such process exists.
      • get

        public abstract ProcessTree.OSProcess get​(java.lang.Process proc)
        Try to convert Process into this process object or null if it fails (for example, maybe the snapshot is taken after this process has already finished.)
      • killAll

        public abstract void killAll​(java.util.Map<java.lang.String,​java.lang.String> modelEnvVars)
                              throws java.lang.InterruptedException
        Kills all the processes that have matching environment variables.

        In this method, the method is given a "model environment variables", which is a list of environment variables and their values that are characteristic to the launched process. The implementation is expected to find processes in the system that inherit these environment variables, and kill them all. This is suitable for locating daemon processes that cannot be tracked by the regular ancestor/descendant relationship.

        Specified by:
        killAll in interface ProcessTreeRemoting.IProcessTree
        Throws:
        java.lang.InterruptedException
      • killAll

        public void killAll​(java.lang.Process proc,
                            java.util.Map<java.lang.String,​java.lang.String> modelEnvVars)
                     throws java.lang.InterruptedException
        Convenience method that does killAll(Map) and ProcessTree.OSProcess.killRecursively(). This is necessary to reliably kill the process and its descendants, as some OS may not implement killAll(Map). Either of the parameter can be null.
        Throws:
        java.lang.InterruptedException
      • get

        public static ProcessTree get()
        Gets the ProcessTree of the current system that JVM runs in, or in the worst case return the default one that's not capable of killing descendants at all.