【发布时间】:2011-11-21 01:02:47
【问题描述】:
我有一个用 C 语言编写的小可执行程序,它可以为文件生成大量输出。 当我用运行时调用这个程序时,像这样:
Runtime r = Runtime.getRuntime();
Process p = null;
p = r.exec("./my_program -in input.file -out output.file", null, new File(System.getProperty("java.io.tmpdir")));
当程序产生低输出时一切正常,但是当我用大输入调用“*my_program*”时,它将产生大量输出到 output.file,但在这种情况下,我的 Java 程序冻结并什么都没发生……
我在终端中使用大量大型输入测试“*my_program*”,一切正常,但是当我使用 Runtime.exec 在 Java 中调用该程序时,Java 程序冻结。
-- 提前致谢
【问题讨论】:
-
这篇文章有点旧,但仍然包含相关信息:当Runtime Exec Won't。另外,您的应用程序是 Swing 应用程序吗?可执行程序最终会完成吗?
-
Runtime.exec 本质上是一个管道连接,你必须准备好处理多个信息缓冲区。需要十几行才能正确完成。
-
不,我的应用程序是一个 Eclipse 插件。我不这么认为,因为我用相同的输入测试了相同的 C 程序,但在终端中运行并且工作正常......
-
@zecapistolas:您显然没有阅读我的链接,该链接的状态与 ziesemer 稍后回答的相同。
-
@HovercraftFullOfEels,还是谢谢你;)
标签: java c runtime runtime.exec