使用java语言中的runtime.exec()执行C文件

使用java语言中的runtime.exec()执行C文件,java,runtime,runtime.exec,Java,Runtime,Runtime.exec,我正在用java编写一个程序,在某一点上,我想使用runtime.exec()方法执行一个C语言的程序(其他人已经编写) C语言中的程序以两个参数作为输入,以一个参数作为输出。 因此,当我在终端中运行它时,我会写入(/exec文件名/)param1 param2 result 程序使用这两个参数来计算结果。 更具体地说:param1和param2是图像,以某种方式“比较”/“组合”它们并创建一个新的清晰图像(bmp文件),命名为结果,用于医学图像和生物医学目的。我没有为这个程序编写代码,它很复杂

我正在用java编写一个程序,在某一点上,我想使用runtime.exec()方法执行一个C语言的程序(其他人已经编写)

C语言中的程序以两个参数作为输入,以一个参数作为输出。 因此,当我在终端中运行它时,我会写入(/exec文件名/)param1 param2 result

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

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


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

是的,您可以以这种方式运行任何可执行文件,还可以传递命令行参数。用哪种语言编写程序根本不重要

result
实际上不是一个输出,而是您在调用中还必须提供的输出文件的名称

所以你要写的是这样的:

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

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

首先:您不运行C源代码。触发一个C编译器;它为您构建了一个二进制可执行文件。您可以使用java的运行时exec()从java调用它,就像调用任何其他二进制文件一样。好的,那我该怎么做呢?命令行是什么?实际上你应该做一些事先的研究。那里有很好的教程;在这个网站上有很多问题都有很好的答案。你到底为什么认为你需要有人向你解释那些已经被记录了很多次的东西?我是否需要去可执行文件和两个图像所在的文件夹?和我在候机楼的方式一样?(cd./home/etc)@eliodorou:这是一种可能性。但您也可以尝试找出程序是否接受输入文件前面的路径名。有关正确创建和处理进程(包括读取输出流)的许多好提示,请参阅。然后忽略它引用
exec
,并使用
ProcessBuilder
创建流程。还可以将
String arg
分解为
String[]args
,以轻松说明包含空格的路径或参数。