首页 > 解决方案 > 如何将字符串输入发送到 ProcessBuilder

问题描述

class envir {
    public void run() throws IOException {
        ProcessBuilder builder = new ProcessBuilder("bash");
        builder.redirectInput(ProcessBuilder.Redirect.PIPE);
        builder.redirectOutput(ProcessBuilder.Redirect.PIPE);
        builder.redirectErrorStream(true);
        Process process = builder.start();
        System.out.println(process.getInputStream());
    }
}

我如何做到这一点,以便我可以发送一个字符串作为我的流程构建器的输入,以自动化 cli(例如env python3)也使用线程?

如果您需要更多信息,请询问;我不擅长措辞这些问题。

标签: javamultithreadingpipe

解决方案


流的名称Process令人困惑。你真正想要的是输出

public abstract OutputStream getOutputStream()

返回连接到子进程正常输入的输出流。

所以:

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream(), StandardCharsets.UTF_8));

然后写信给它:

bw.write("Your string");
bw.newLine();

推荐阅读