为什么PrintWriter可以输出到Process,但BufferedWriter不能?

时间:2012-05-17 02:12:50

标签: java linux terminal

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

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没有得到输入。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

你必须在BufferedWriter上做一个flush()以确保它熄灭。