将C++程序输出作为Java输入

Col*_*747 0 c++ java linux io

我遇到一种情况,我正在寻找我的 Java 程序作为 BASH 脚本运行,而 BASH 脚本又将运行 C++ 程序。

我希望将 C++ 程序的输出(打印到终端的纯文本字符串)作为 Java 程序的输入。

我的第一次尝试是使用以下代码从终端读取输入,但我不确定如何将其从用户输入转换为自动获取 C++ 输入。

Console c;
c = System.console();
if (c == null) {
  System.out.println("No console.");
  System.exit(1);
}
String data = c.readLine();
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用InputStreamReader重定向 C++ 程序的输出:

Java代码:

BufferedReader input = null;
try {
  input = new BufferedReader(new InputStreamReader(System.in));
  String htmlLine = null;
  while ((htmlLine = input.readLine()) != null) {
    System.out.println(htmlLine);
  }
}
Run Code Online (Sandbox Code Playgroud)

重定向输出的命令:

java -jar program.jar arg1 arg2 arg3 < ./runActivities.sh
Run Code Online (Sandbox Code Playgroud)

然而,其结果是它只是将内容打印runActivities.sh到终端。

Mat*_*ias 5

看起来您已准备好所有 Java 和 C++ 代码。缺少的一块似乎是 shell 重定向。您应该查阅您正在使用的 shell 的手册并查找重定向。如果您使用 bash shell,重定向应如下所示:

$ ./runActivities.sh | java -jar program.jar arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)