【问题标题】:Why does PrintWriter work for outputting to Process, but BufferedWriter does not?为什么 PrintWriter 可以输出到 Process,而 BufferedWriter 不行?
【发布时间】:2012-05-17 02:12:50
【问题描述】:

我有类似于下面的代码与 Java 中的 gdb 交互。我使用 gdb 启动进程,然后获取进程的流。我有一个线程不断读取进程的输出(使用procOut)并将其打印到屏幕上,然后我使用procIn.println("some_command") 向gdb 发送命令-

Process proc = new ProcessBuilder("gdb").start;

procOut = new BufferedReader(new InputStreamReader(proc.getInputStream()));
procErr = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
procIn = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())));

但是,如果我将 procIn 更改为 BufferedWriter -

procIn = BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));

并使用procIn.write("some_command"),它不起作用并且gdb 没有得到输入。有人知道为什么会这样吗?

【问题讨论】:

  • 您尝试拨打flush()吗?

标签: java linux terminal


【解决方案1】:

您必须在 BufferedWriter 上执行一次 flush() 以确保它熄灭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多