在 Java 中将各种字符串输入到同一进程

Input various strings to same process in Java

我正在编写一个 Java 程序,该程序通过 ProcessBuilder 访问已编译的 C++ 程序。 C++ 程序需要一段时间才能 "start up",但一旦完成,它就可以接收文本字符串并非常快速地获得输出(当前正在写入文本文件)。

本质上,有没有一种方法可以让 运行 进程 "wait" 为其提供输入,而不必在启动时输入输入源?我不想每次用户输入字符串时都必须重新启动进程,因为这会花费太长时间并且没有必要。同时,我想启动进程,让它"ready",然后提示用户输入。一旦用户这样做,我想将该输入发送到 运行 进程,收集输出并呈现它。这可能吗?

谢谢!

如果您希望 Java 程序为 C++ "wait",您需要某种方式让 C++ 程序告诉 Java 程序它已准备就绪。您可以通过从 C++ 程序的输出流向 Java 程序发送一条消息,并让 Java 程序等到它在提示用户输入之前读取自己的输入流上的内容来完成此操作。

另一方面,Java 程序等待的唯一原因是装饰性的。如果您的所有通信都通过流进行,Java 程序可以随时开始向 C++ 发送字符串,C++ 将在完成启动后从其输入流中读取这些字符串。没有 Java 程序等待意味着用户输入和收到输出之间的时间可能会更长,但启动 C++ 程序和接收输出之间的总时间实际上可能会减少。