gpt4 book ai didi

java - 如何杀死由子线程启动的进程?

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:03 28 4
gpt4 key购买 nike

代码:

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); 。请帮忙。

最佳答案

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();
}
}

关于java - 如何杀死由子线程启动的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com