How to kill a process which is started by child thread?
java, scope
Solution
The Process API already has a solution for this. What happened when you tried calling `destroy()` on the process? Of course assuming that you've changed the above code and have declared your Process variable, p, as a class field.
As an aside, you should avoid using `Runtime.getRuntime().exec(...)` to get your Process but rather should use a ProcessBuilder. Also, don't extend Thread when Runnable can be implemented.
class Foo {
private Process p;
Runnable runnable = new Runnable() {
public void run() {
ProcessBuilder pBuilder = new ProcessBuilder(...); // fill in ...!
// swallow or use the process's Streams!
p = pBuilder.start();
}
}
public Foo() {
new Thread(runnable).start();
}
}
Problem
Code: ``` main function{ Thread t =new Thread(){ public void run(){ Process p= Runtime.getRuntime().exec(my_CMD); } }; t.start(); //Now here, I want to kill(or destroy) the process p. ``` How can I do this in Java? If I make it as a class field as in ``` main function{ Process p; Thread t =new Thread(){ public void run(){ p= Runtime.getRuntime().exec(my_CMD); } }; t.start(); //Now here, I want to kill(or destroy) the process p. ``` Since it is in a thread, it asks me to make the Process P as `final`. If I make that `final`, I cant assign value here. `p= Runtime.getRuntime().exec(my_CMD);` . plz help.