自己写了一段小程序,是利用Runtime.getRuntime().exec();起了一个进程,想在这个程序启动之后进行下一步操作。但是由于每台计算机启动各种程序的响应时间不同,所以有时候没等该进程启动下一步的操作就开始进行了。请教各位大牛怎么才能判断这个进行的界面已经出来了啊?谢谢

解决方案 »

  1.   

    参照这个试试private int exec(String command, String[] envp) throws IOException,
    InterruptedException {
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(command, null);
    InputStream stderr = proc.getErrorStream();
    InputStream stdinf = proc.getInputStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    InputStreamReader isr2 = new InputStreamReader(stdinf);
    BufferedReader br = new BufferedReader(isr);
    BufferedReader br2 = new BufferedReader(isr2);
    String line = null;
    System.out.println("<ERROR>");
    while ((line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</ERROR>");
    line = null;
    System.out.println("<INFO>");
    while ((line = br2.readLine()) != null)
    System.out.println(line);
    System.out.println("</INFO>");
    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    return exitVal;
    }
      

  2.   

    进程监听可能纯java无法办到
    如果启动后本身会在控制台有一个启动完毕的提示 则可以通过读取控制台信息来判断
      

  3.   

    个人觉得每一个方法执行完都会有一个返回值。可以捕获这个返回值来判断是否执行完。最近看shell里,可以用&&,来联合执行两个命令,例如:sort -u filename&&echo "over!"
      

  4.   

    3楼还是2楼啊,呵呵
    大概的意思就是程序等待runtime执行完才做下一步事
    我建议你看不懂的话可以参考一下google,这样你更能了解一下Runtime各个API的机制:)  注释我就不写了,有用的就给分,哈