Java - 通过输入流与子应用程序通信

时间:2010-08-13 15:05:05

标签: java command-line

有没有办法可以从java启动命令行应用程序,然后将字符串(命令)发送到其输入流并从其输出流中显示其响应?

我正在使用具有相当复杂的命令行界面(vlc)的应用程序。该应用程序有一个解释器响应一组命令。例如,在我启动应用程序后,我可以通过在命令行上发出命令'pause'来启动或停止电影。

我想编写一个执行程序并向程序发出命令的java应用程序。我已经看到很多java应用程序启动应用程序并获取应用程序输出显示应用程序输出的输出流的示例。但是我从未见过一个例子,java应用程序会向子应用程序发送请求。

有没有办法可以用java做到这一点?

提前致谢!

1 个答案:

答案 0 :(得分:1)

只要生成的进程在stdin上侦听输入,当然。

你会以通常的方式(Runtime.exec())发布Process - 我不会在这里记录,因为你说你已经看到了很多例子。

然后,一旦掌握了衍生过程,就可以调用名称混乱的getOutputStream。这会给你一个OutputStream,其另一端连接到进程的标准输入。因此,您的子进程可以使用写入此流的任何字节,就像您从控制台输入/管道输入一样。

在处理流程时,我会指出一些总是值得阅读的资源;来自任意Google搜索结果的剪切和粘贴作业通常无法正确覆盖边缘情况,并可能导致死锁: