我想用Runtime.exec()开始一个过程。然后我想知道(听)该进程何时退出。另外,如果满足某些条件,我想手动停止该过程。

我现在拥有的代码是:

public class ProcessManager extends Thread{
    private static ProcessManager manager;

    Process process;

    private ProcessManager(){

    }

    public static ProcessManager getInstance(){
        if(manager==null){
            manager=new ProcessManager();
        }
        return manager;
    }

    public void run(){
        Runtime runtime = Runtime.getRuntime();
        process = runtime.exec("c:\\windows\\system32\\notepad.exe");
        //cleanup();
    }
    public void cleanup(){
        //I want to do stuffs until the program really ends;
    }

    //called to manually stop the process
    public void stopProcess(){
        if(process!=null){
            //TODO: stop the process;
        }
    }
}


如代码中所示,我的程序就像notepad.exe,它弹出一个窗口并立即返回。如何收听程序的状态,等待其关闭以及显式关闭程序?

最佳答案

我该如何收听程序的状态,并等待直到
  关闭,以及显式关闭?


您可以使用Process#waitFor()

// cause this process to stop until process p is terminated
         p.waitFor();


正如JavaDoc所说


  java.lang.Process.waitFor()方法使当前线程
  如有必要,请等待,直到该流程表示的流程为止
  对象已终止。如果
  子进程已经终止。如果子流程还没有
  终止,调用线程将被阻塞,直到子进程
  退出。

10-06 05:12
查看更多