我有一个java程序。该程序使用Runtime.exec打开Windows计算器。到目前为止一切顺利,但我需要在用户关闭程序时出现一条消息,说“程序已成功关闭”。
我用destroy()制作它,但这不是我需要的。
答案 0 :(得分:3)
您必须在Process
返回exec()
之前致电waitFor()
。这将等待线程结束,并将返回您可以测试的退出值(0
是一个成功的退出值,其他一切都是一个不成功的退出值。)
try {
final Process calc = Runtime.getRuntime().exec("calc");
if (calc.waitFor() == 0) {
JOptionPane.showMessageDialog(null, "Program has been closed successfully.", "Program closed", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Program has been closed unsuccessfully.", "Program closed", JOptionPane.WARNING_MESSAGE);
}
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "IO error: " + e.getMessage(), "Exception encountered", JOptionPane.ERROR_MESSAGE);
} catch (InterruptedException e) {
JOptionPane.showMessageDialog(null, "Thread interrupted: " + e.getMessage(), "Exception encountered", JOptionPane.ERROR_MESSAGE);
}
答案 1 :(得分:0)
您可以尝试在流程上调用waitFor()
,并且该方法返回检查isAlive()
以确定。要检查流程是否正常终止,您可以检查waitFor()
的返回值或致电exitValue()
。