【问题标题】:Run C++ executable from Java in Linux [closed]在 Linux 中从 Java 运行 C++ 可执行文件 [关闭]
【发布时间】:2013-09-04 23:48:46
【问题描述】:

如何在 Linux 中从我的 Java 代码运行放置在桌面上的 C++ 可执行文件“exerun”。我发现了很多关于运行时的信息,但我无法清楚地理解这个概念。请帮我清除它....

【问题讨论】:

  • 您可能想从学习如何从 java vm 运行 any 可执行文件开始。 C++ 与这个问题无关。
  • 当你知道你需要像Runtime 这样的类时,你应该查找that class in the Javadocs 以了解它的功能:Runtime.getRuntime().exec("exerun.exe")

标签: java


【解决方案1】:

应该使用ProcessBuilder 而不是Runtime

Process p = new ProcessBuilder("myCommand", "myArg").start();

您可以从p 获取输入流、输入错误流和输出流。 然后你可以重定向进程的输出并通过java为其提供输入。

您还应该看看这个question。它向您展示了如何设置工作目录。

【讨论】:

    【解决方案2】:

    基本上,您需要使用Runtime.getRuntime().exec(command),其中command 是您要执行的命令。这将返回一个Process 对象(比如myProcess)。

    如果您的程序产生输出,您将需要不断读取您可以使用myProcess.getInputStream()myProcess.getErrorStream() 检索的流。它们分别对应进程的stdoutstderr

    如果myProcess 产生输出并且您没有从Java 程序中读取它,myProcess 将在一段时间后锁定。

    【讨论】:

      【解决方案3】:

      您可以按照以下示例尝试exec()

      Runtime.getRuntime().exec("c:\\path_to_the_file\\myfile.exe", null, new File("c:\\path_of_the_folder");
      

      在这里,您可以找到 3 个参数:

      • .exe 的位置
      • 第二个参数可以是null
      • *.exe 文件所在目录的路径。

      【讨论】:

      • 如何在 Linux 上获得c:\\path_to_the_file\\myfile.exe 目录结构?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 2013-05-08
      • 2014-11-07
      • 2013-04-27
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多