我想用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()方法使当前线程
如有必要,请等待,直到该流程表示的流程为止
对象已终止。如果
子进程已经终止。如果子流程还没有
终止,调用线程将被阻塞,直到子进程
退出。