从Java运行交互式命令行应用程序
我通常使用java.lang.ProcessBuilder和java.lang.Process来运行外部命令行程序,并且对运行和完成命令运行良好。例如,这将在工作目录中运行带有参数“
myArg”的“ myProgram”:
List<String> commandLine = new ArrayList<String>();commandLine.add("myProgram");
commandLine.add("myArg");
ProcessBuilder builder = new ProcessBuilder(commandLine);
builder.redirectErrorStream(true);
Process process = builder.start();
但是,假设我想运行脚本或程序或具有交互式输入的内容(启动后提示我提供更多输入)。我可以使用与上面类似的代码在Java中执行此操作,还是需要其他方法?还是有一些图书馆可以帮助我呢?
回答:
根据文档,您应该能够重定向输入和输出流。告诉它使用父进程中的System.in
/
System.out
:
builder.redirectInput(ProcessBuilder.Redirect.INHERIT);builder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
如果要将内容写到流程的输入中:
如果源是Redirect.PIPE(初始值),则可以使用Process.getOutputStream()返回的输出流来写入子流程的标准输入。如果源设置为任何其他值,则Process.getOutputStream()将返回空输出流。
以上是 从Java运行交互式命令行应用程序 的全部内容, 来源链接: utcz.com/qa/415196.html