[英]How to close all processes created by java swing application?
我正在創建一個java swing應用程序,允許用戶為命令行執行多個命令。 我已經添加了這行代碼以確保我的swing應用程序在關閉時退出:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
但是,如果關閉gui,如何確保swing應用程序調用的所有進程都被銷毀。 這是我通過gui執行命令的代碼:
Process p;
String command = "java -jar blah blah blah";
try {
System.out.println("Export Command To Execute: " + command);
p = Runtime.getRuntime().exec(command);
p.waitFor();
//BufferedReader inputStream = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader errorStream = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = "";
String output ="";
while((line = errorStream.readLine()) != null) {
output+=line;
}
//inputStream.close();
errorStream.close();
System.out.println(output);
System.out.println("Export complete!...");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
應用程序的用戶可以在應用程序中執行多個命令,並且每個命令可能需要一段時間才能運行,所以我想確保應用程序創建的所有進程都被殺死,而不是讓用戶選擇關閉時連續運行應用程序。
請參閱: 如何從代碼中關閉Java Swing應用程序,如果已經啟動了Java進程,則可以在關閉swing應用程序后使用命令:“taskkill / pid xxx”(假設為windows)將其終止。 我假設您可以獲得在swign應用程序命令中啟動的進程的pids。 如何在java中找到進程的進程ID(pid)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.