У меня есть код, похожий на следующий, который взаимодействует с 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 не получает вход. Кто-нибудь знает, почему это происходит?
Вы пытались вызвать 'flush()'? –