Package org.apache.commons.exec

# Class ShutdownHookProcessDestroyer

java.lang.Object
org.apache.commons.exec.ShutdownHookProcessDestroyer

All Implemented Interfaces:
  `Runnable`, `ProcessDestroyer`

public class ShutdownHookProcessDestroyer extends Object implements ProcessDestroyer, Runnable
Destroys all registered `Process`es when the VM exits.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ShutdownHookProcessDestroyer()`
  Constructs a `ProcessDestroyer` and obtains `Runtime.addShutdownHook()` and `Runtime.removeShutdownHook()` through reflection.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `add(Process process)`
  Returns `true` if the specified `Process` was successfully added to the list of processes to destroy upon VM exit.
  `boolean`
  `isAddedAsShutdownHook()`
  Tests whether or not the ProcessDestroyer is registered as shutdown hook.
  `boolean`
  `isEmpty()`
  Tests emptiness (size == 0).
  `boolean`
  `remove(Process process)`
  Returns `true` if the specified `Process` was successfully removed from the list of processes to destroy upon VM exit.
  `void`
  `run()`
  Invoked by the VM when it is exiting.
  `int`
  `size()`
  Returns the number of registered processes.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ShutdownHookProcessDestroyer

    public ShutdownHookProcessDestroyer()
    Constructs a `ProcessDestroyer` and obtains `Runtime.addShutdownHook()` and `Runtime.removeShutdownHook()` through reflection. The ProcessDestroyer manages a list of processes to be destroyed when the VM exits. If a process is added when the list is empty, this `ProcessDestroyer` is registered as a shutdown hook. If removing a process results in an empty list, the `ProcessDestroyer` is removed as a shutdown hook.

- ## Method Details

  - ### add

    public boolean add(Process process)
    Returns `true` if the specified `Process` was successfully added to the list of processes to destroy upon VM exit.
    Specified by:
      `add` in interface `ProcessDestroyer`
    Parameters:
      `process` - the process to add.
    Returns:
      `true` if the specified `Process` was successfully added.

  - ### isAddedAsShutdownHook

    public boolean isAddedAsShutdownHook()
    Tests whether or not the ProcessDestroyer is registered as shutdown hook.
    Returns:
      true if this is currently added as shutdown hook.

  - ### isEmpty

    public boolean isEmpty()
    Tests emptiness (size == 0).
    Returns:
      Whether or not this is empty.
    Since:
      1.4.0

  - ### remove

    public boolean remove(Process process)
    Returns `true` if the specified `Process` was successfully removed from the list of processes to destroy upon VM exit.
    Specified by:
      `remove` in interface `ProcessDestroyer`
    Parameters:
      `process` - the process to remove.
    Returns:
      `true` if the specified `Process` was successfully removed.

  - ### run

    public void run()
    Invoked by the VM when it is exiting.
    Specified by:
      `run` in interface `Runnable`

  - ### size

    public int size()
    Returns the number of registered processes.
    Specified by:
      `size` in interface `ProcessDestroyer`
    Returns:
      the number of register process.