javaruntimesubprocessshutdownprocess-management

How do I get rid of Java child processes when my Java app exits/crashes?


I launch a child process in Java as follows:

final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);

It now runs in the background. All good and fine.

If my program now crashes (it is still in dev :-)) the child process still seems to hang around. How can I make it automatically end when the parent Java process dies?

If it helps, I'm using Mac OS X 10.5


Solution

  • As you said, addShutdownHook is the way to go.

    BUT:

    Another possibility would be to wrap your java program in a service.