Tag: 命令行输入

无法使用Apache Commons Exec为命令提供多个输入并提取输出

我正在编写一个Java应用程序,需要使用Apache Commons Exec库来使用外部命令行应用程序。 我需要运行的应用程序具有相当长的加载时间,因此最好保持一个实例处于活动状态而不是每次都创建一个新进程。 应用程序的工作方式非常简单。 一旦启动,它会等待一些新输入并生成一些数据作为输出,两者都使用应用程序的标准I / O. 因此,我们的想法是执行CommandLine,然后将PumpStreamHandler与三个独立的流(输出,错误和输入)一起使用,并使用这些流与应用程序进行交互。 到目前为止,我已经在基本场景中完成了这项工作,我有一个输入,一个输出,然后应用程序关闭。 但是一旦我试图进行第二次交易,就会出现问题。 在创建了我的CommandLine之后,我创建了我的Executor并像这样启动它: this.executor = new DefaultExecutor(); PipedOutputStream stdout = new PipedOutputStream(); PipedOutputStream stderr = new PipedOutputStream(); PipedInputStream stdin = new PipedInputStream(); PumpStreamHandler streamHandler = new PumpStreamHandler(stdout, stderr, stdin); this.executor.setStreamHandler(streamHandler); this.processOutput = new BufferedInputStream(new PipedInputStream(stdout)); this.processError = new BufferedInputStream(new PipedInputStream(stderr)); this.processInput = new BufferedOutputStream(new PipedOutputStream(stdin)); this.resultHandler […]