【问题标题】:using runtime.exec() in java language to execute a C file在java语言中使用runtime.exec()来执行一个C文件
【发布时间】:2016-03-22 19:16:53
【问题描述】:

我正在用 java 编写一个程序,在某个时刻,我想使用 runtime.exec() 方法执行一个 C 程序(已经由其他人编写)。

C 中的程序将两个参数作为输入并给出一个作为输出。 所以当我在终端中运行它时,我会写(/执行文件的名称/)param1 param2 result

程序使用这两个参数来计算结果。 更具体地说: param1 和 param2 是图像,并以某种方式“比较”/“组合”它们并创建一个新的清晰图像(bmp 文件)命名结果,用于医学图像和生物医学目的。我没有为这个程序编写代码,它很复杂,所以我想通过 java 执行它。如果我能做到这一点,我就不必了解 C 中的程序是如何工作的。我所要做的就是通过运行我的 java 程序找出如何执行它。

我可以使用java中的runtime.exec()方法来执行用C编写的(我不熟悉的)程序吗?

如果是,我还想知道如何提供输入(param1 和 param2)以及如何获取输出(结果)以供在我的 java 代码中进一步使用。

【问题讨论】:

  • 第一:你没有运行 C源代码。你触发了一个 C 编译器;它为您构建了一个二进制可执行文件。并且您可以从 java 调用,使用它的运行时 exec(),就像调用任何其他二进制文件一样。
  • 好吧,我该怎么做呢?命令行是什么?
  • 其实你应该做一些前期研究。那里有很好的教程;在这个网站上有很多问题有很好的答案。为什么你认为你需要有人向你解释已经被记录很多次的东西?

标签: java runtime runtime.exec


【解决方案1】:

是的,您可以通过这种方式运行任何可执行文件并传递命令行参数。程序是用哪种语言编写的完全没有关系。

result 并不是真正的输出,而是您还必须在调用中提供的输出文件的名称。

所以你必须写是这样的:

Runtime.exec("programName image1.bmp image2.bmp result.bmp");

我不确定“获取输出(结果)以供进一步使用”是什么意思。如果您需要图像数据,请使用一些图像解析或处理库打开图像文件(您知道它的名称)。

【讨论】:

  • 我是否必须以某种方式转到可执行文件和两个图像所在的文件夹?和我在终端做的一样吗? (cd ./home/ 等)
  • @eliodorou:这是一种可能性。但您也可以尝试找出程序是否接受附加到输入文件的路径名。
  • 另请参阅When Runtime.exec() won't,了解有关正确创建和处理进程(包括读取输出流)的许多好技巧。然后忽略它引用exec 并使用ProcessBuilder 来创建进程。还将String arg 拆分为String[] args 以轻松解释包含空格的路径或参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多