我使用以下命令从我的java代码调用.exe文件:
Runtime r=Runtime.getRuntime();
Process p=null;
p=r.exec("ABCD.exe");
Run Code Online (Sandbox Code Playgroud)
我希望程序等到exe完成它的工作.(这实际上是服务器端代码...控制在此之后传递给客户端).现在的问题是客户端的UI在服务器端的.exe之前填充可以形成所需的组件.形成的UI没有正确的文件.我尝试了正常的p.waitfor(),但它似乎没有用.有什么建议?
简短的回答是你要在主线程中调用Process.waitFor(),正如你所提到的那样.
但是,处理进程并不是一成不变的,因为正如类javadocs所引用的那样,您可能需要读取进程的输出.如果你不这样做(在这种情况下将需要一个单独的线程),那么在许多情况下你将有一个有效的死锁 - 你的Java应用程序正在等待进程完成,但是进程正在尝试将输出写入一个完整的缓冲区,从而等待Java应用程序读取其输出.
如果您提供了有关"它不起作用"的更多信息,那么这也有助于诊断.
编辑:在完全独立的点上,初始化p为null并且然后立即重新分配它没有任何意义.你的第二行会更清晰,也不会那么混乱Process p = r.exec("ABCD.exe");.
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |