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

时间:2015-10-26 19:25:43

标签: java processbuilder

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

基本上,有没有办法让一个正在运行的过程"等待"要给它一个输入,而不是在它启动时输入输入源?每次用户输入字符串时,我都不想重新启动进程,因为这将花费太长时间而且是不必要的。同时,我想开始这个过程,准备好"准备好",然后提示用户输入。一旦用户这样做,我想将该输入发送到正在运行的进程,收集输出并呈现它。这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您希望Java程序等待"等待"对于C ++,您需要一些方法让C ++程序告诉Java程序它已经准备好了。您可以通过从C ++程序的输出流向Java程序发送消息来实现此目的,并使Java程序等到它在提示用户输入之前读取其自身的输入流之前的内容。

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