【发布时间】:2018-08-30 06:15:54
【问题描述】:
我有一个创建子进程的 Java Swing 应用程序。主 Swing 应用程序有一个停止按钮,当按下该按钮时应立即终止子进程。 “process.destroy()”没有用。
Process myProcess = new ProcessBuilder("java", "-classpath", System.getProperty("java.class.path"), "MyClass.java");
try {
myProcess.waitFor();
}
catch (Exception e) {
e1.printStackTrace();
}
...
myStopButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
myProcess.destroyForcibly();
// myProcess is a really long and complex process. So I could not destroy that using process.destroyForcibly().
}
}
- 我可以向子进程发送一些信号以调用 System.exit() 内部?
- 我可以使用“taskkill”只杀死子进程吗?
【问题讨论】:
-
能否请您向我们展示您如何启动子流程以及如何尝试暂停它...
-
如果您有不工作代码,请提供minimal reproducible example,否则我们无法帮助您。除此之外,停止进程是一个已解决的、有据可查的话题。所以:请在此处发布问题之前进行扎实的研究。
-
然后: System.exit() 杀死你的 JVM,包括所有子进程。但也是父级,所以这不是你打算使用的(大部分时间)。
-
如果我在新进程中调用 System.exit() ,为什么会停止主进程?
-
我不得不发布这个问题,因为大多数解决方案都不适合我。例如,请参阅 destory() 的 java 文档:“终止进程。此 Process 对象表示的进程是否正常终止取决于实现。”
标签: java swing process terminate