Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
int exitVal = proc.waitFor();如果 exitVal == 0 那么表示正常终止

解决方案 »

  1.   

    我也是这样想的,我的测试程序如下:
             Process p;
             int processExit=0;         p = Runtime.getRuntime().exec("cmd /c \"start ping 127.0.0.1 -t\"");
             processExit=p.waitFor();
             while (processExit!=0) {
                System.out.println("please waiting...");
                processExit=p.waitFor();
             }         
             System.out.println("Success!");
    由于执行的是ping 127.0.0.1 -t,按理说,程序运行后应该不断打出please waiting...,而不应该出现Success!,更不应该退出,除非是我把弹出的窗口关闭。
    可事实却不是这样。
    不理解。
      

  2.   

    你应该这样理解
    start ping 127.0.0.1 -t
    这条命令先执行 start   打开一个新的 Dos 窗口
    到这一步 Java 就认为命令已经成功返回了
    至于 ping 127.0.0.1 -t 那是 Dos 窗口的事
    与 Runtime 无关了你可以把 Start 去掉 在感觉一下
      

  3.   

    wk0210(wk0210) 的方法就是你要的结果。
    利用无限循环,每循环一次就判断是否执行完毕,如果还没有,就等待若干秒,继续循环,
    如果执行完了,就退出循环,继续干你下面想做的事情。
      

  4.   

    楼上的这个问题就是我(wk0210)提出来的,那样写是不行的,不能够判定外部程序是否执行完毕。
    看看telenths(_非法操作_)的回复。征求好方法。
      

  5.   

    p = Runtime.getRuntime().exec("cmd /c \"start ping 127.0.0.1 -t\"");
    //没有必要用start,exec()会另起一个process来执行命令
             processExit=p.waitFor();         while (processExit!=0) {
    //没有必要用循环,waitfor会等待process结束。
    ......
    我建议你先试试如下程序,你看不到Ping程序执行的窗口,但可以捕捉返回值。
             Process p;
             int processExit=0;         p = Runtime.getRuntime().exec("ping 127.0.0.1");
             processExit=p.waitFor();         if (processExit==0) System.out.println("Success!");然后再试试如下程序,ping的返回值捕捉不到了:
             Process p;
             int processExit=0;         p = Runtime.getRuntime().exec("cmd /c \" start /wait ping 127.0.0.1 -t\"");
             p.waitFor();         System.out.println("Success!");