2012-05-17 1 views
0

У меня есть код, похожий на следующий, который взаимодействует с gdb с Java. Я запускаю процесс с помощью gdb, а затем получаю потоки процесса. У меня есть поток, который постоянно считывает выходные данные процесса (с использованием procOut) и печатает его на экране, и я посылать команды GDB с помощью procIn.println("some_command") -Почему PrintWriter работает для вывода в Process, но BufferedWriter этого не делает?

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

Вы пытались вызвать 'flush()'? –

ответ

3

Вы должны сделать flush() на BufferedWriter, чтобы убедиться, что он выключен.

Смежные вопросы