将c++程序输出作为Java输入
Take C++ program output as Java input
我有一种情况,我正在寻找我的Java程序作为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();
然后我尝试使用InputStreamReader
以及重定向c++程序的输出:
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(System.in));
String htmlLine = null;
while ((htmlLine = input.readLine()) != null) {
System.out.println(htmlLine);
}
}
命令重定向输出:
java -jar program.jar arg1 arg2 arg3 < ./runActivities.sh
然而,这样做的结果是它只是将runActivities.sh
的内容打印到终端。
看起来您已经准备好了所有的Java和c++代码。缺少的拼图部分似乎是shell重定向。您应该查阅正在使用的shell的手册并查找重定向。如果您使用的是bash shell,重定向应该是这样的:
$ ./runActivities.sh | java -jar program.jar arg1 arg2 arg3
您可以使用java中的Runtime.getRuntime().exec("yourCommand")函数,它将返回一个具有输入、输出和错误流的Process对象,你可以使用这些流向进程发送和接收数据。
Process p = Runtime.getRuntime().exec("yourCommand");
InputStream is = p.getInputStream();
// you con now read from inputStream, it is the output of your programm in C++
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 在 c++ 中模拟输入并在 JAVA 中读取它?
- 从 Java 运行C++ .exe程序没有输出,也没有接收输入
- java 输入流,字节大,然后是 127
- 如何通过代码(例如Java)将键按输入发送到浏览器中
- 从用户控制台获取输入 - Java 代码
- Java ProcessBuilder EXE文件未正确获取输入流
- 保持循环,直到输入在 Java 中可用
- 用于输入验证的C++到Java的等效代码
- 创建一个控制台应用程序,打开TCP/IP连接并用C++、C#或Java打印输入的字符串
- 将c++程序输出作为Java输入