title: cmd java wait for process
body: <p>I'm writing an application with a Java GUI which calls some FORTRAN code. I want to return a file (solution.ps) which is updated and compiled based on changes in the FORTRAN code, which are created earlier in my ActionPerformed method. However the code I have at present just returns the old version of the file rather than waiting for the updated results of the cmd compilation. Is there a way to make the cmd wait for the process to run before completing the next step? (It works fine running directly from cmd)  </p>
  
  <p>I've searched but can't find anything except process.waitFor() which won't seem to pause the execution at the right point. Tried Thread.waitFor() too.</p>
  
  <p>I'm thinking this could be useful for anyone who wants to send user inputs to another program and return a compiled result which uses these inputs. </p>
  
  <p>Anyway here is the code, thanks in advance for any help and I hope I made the problem clear.  </p>
  
  <pre><code>String[] command ={"cmd",};
          try {
              Process p = Runtime.getRuntime().exec(command); 
              new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
              new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
              PrintWriter stdin = new PrintWriter(p.getOutputStream());
              stdin.println("cd c:\\g77");     
              stdin.println("g77setup.bat");
              stdin.println("cd c:\\users\\laurence\\workspace\\areaplanner");
              stdin.println("g77 -O4 genpack.f -o genpack");
              stdin.println("genpack");
              stdin.println("5"); 
              /* 
               * The following line sets the time to run the FORTRAN code for  
               * - need to wait for this to complete before calling mpost
               */
              stdin.println("30"); 
  
              stdin.println("mpost solution.mp");
              stdin.println("latex solution.tex");
              stdin.println("dvips solution.dvi -o solution.ps");
              stdin.close();
              } catch(IOException e4){}
  </code></pre>