簡體   English   中英

以編程方式殺死Java中的進程

[英]Kill Process in Java programmatically

我有一個Swing應用程序,該應用程序通過文本框獲取輸入,並且當單擊“開始”按鈕時,我們以編程方式(Aorg.apache.tools.ant.Project,org.apache.tools.ant.ProjectHelper)啟動了一個Ant腳本( ant文件屬性來自輸入文本框)。 這個Ant腳本將開始從CVS中檢出代碼。

現在,我想在用戶單擊“停止”按鈕時停止執行此Ant腳本。

問題:用戶填寫文本框並單擊“開始”后,便立即開始執行Ant腳本。 因此,控件從該Applet或Input頁面移至后端Java代碼。 因此,我無法訪問主小程序中的“停止”按鈕。

我不確定,但是聽起來您想要做的是使用線程執行后端Java代碼,然后告訴該線程在用戶按下stop時終止。

public class Kill 
{
    public static void main(String[] args) throws Exception 
    {
        ProcessBuilder p = new ProcessBuilder("notepad.exe","fake.xml");
        p.directory(new File("c:/temp/"));

        System.out.println("Starting ...");
        Process x = p.start();
        System.out.println("Started ...");
        System.out.println("Sleeping ...");
        Thread.sleep(3000);     
        System.out.println("Woke up ...");
        System.out.println("Destroying...");

        x.destroy();
        x.waitFor(); // If you don't wait for it then the application will be terminated as soon as it is started

        System.out.println("Return value = " + x.exitValue());
        System.out.println("Over ...");
    }
}

一種方法是使用x.waitFor(); 方法,並一直等待用戶采取行動殺死螞蟻進程,否則它可能會自行完成。 無論如何,您將需要x.destroy(); 並使用x.exitValue()檢查成功與失敗。 但是在工作線程中使用它更有意義,因為UI將保持響應狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM