代码:
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.
我怎样才能用Java做到这一点?如果我将其作为
中的类字段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.
由于它在一个线程中,它要求我将进程P设为final
。如果我做final
,我就不能在这里指定值。 p= Runtime.getRuntime().exec(my_CMD);
。请帮助。
答案 0 :(得分:3)
Process API已有解决方案。您尝试在流程上调用destroy()
时发生了什么?当然假设您已经更改了上面的代码并将Process变量p声明为类字段。
顺便说一句,你应该避免使用Runtime.getRuntime().exec(...)
来获取你的进程,而应该使用ProcessBuilder。此外,当可以实现Runnable时,不要扩展Thread。
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();
}
}