【发布时间】:2018-12-18 12:45:04
【问题描述】:
我有一个用 c 编写的控制台应用程序,它在控制台中运行并且有自己的伪控制台。通过它,我配置了这个应用程序并运行它。一切都好。 现在我试图在 Java 应用程序中运行这个应用程序,但我遇到了问题。 例如,我使用 sh
ProcessBuilder builder = new ProcessBuilder("sh");
builder.redirectErrorStream(true);
Process process = builder.start();
try (BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()))) {
bw.write("echo lol");
while (true) {
// System.out.println(process.isAlive());
if (br.ready()) {
System.out.println(br.readLine());
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
主要思想是在控制台中运行应用程序并向其发送几个命令。
【问题讨论】:
-
如我所见,您正试图将标准输入和标准输出重定向到另一个进程。那是:stackoverflow.com/questions/10407308/… 你想要达到什么目的?
-
看起来像。会尝试
-
它有效,但只有一次。如果:` PrintWriter pw = new PrintWriter(process.getOutputStream());
pw.println("echo Hello World");pw.println("回声哈哈");将只打印你好字 -
试试:
pw.println("echo Hello World"); pw.flush(); pw.println("echo lol"); pw.flush(); -
试试看。还是打个招呼((