我正在编写一个带有 Java GUI 的应用程序,它调用一些 FORTRAN 代码。我想返回一个文件 (solution.ps),该文件根据 FORTRAN 代码中的更改进行更新和编译,这些更改是在我的 ActionPerformed 方法中创建的。但是我目前的代码只是返回文件的旧版本,而不是等待 cmd 编译的更新结果。有没有办法让 cmd 在完成下一步之前等待进程运行?(直接从 cmd 运行效果很好)
我已经搜索但除了 process.waitFor() 之外找不到任何东西,它似乎不会在正确的点暂停执行。也尝试过 Thread.waitFor() 。
我认为这对于想要将用户输入发送到另一个程序并返回使用这些输入的编译结果的任何人都可能有用。
无论如何,这里是代码,在此先感谢您的帮助,我希望我能把问题弄清楚。
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){}