В Java я запускаю приложение C ++, которое регистрирует свой прогресс по мере его прохождения и хочу постоянно следить за его прогрессом, поэтому (в Java) я отслеживаю process.getInputStream () и process.getErrorStream ().Когда я запускаю приложение C ++ из командной строки, журнал отображается по одной строке за раз (примерно 1 строка - 1-2 секунды).С монитора Java я не получаю данные в режиме реального времени и не уверен, кто их буферизирует.
Я могу посмотреть на код C ++ (хотя он довольно сложный) и попытаться поставить flush ()вызывает по мере необходимости, но данные появляются в реальном времени, когда я запускаю их из cmd.exe, поэтому, прежде чем я это сделаю, я хотел бы проверить, есть ли что-то еще на пути, что мне нужно сделать.Что-то в Java мне нужно сделать, чтобы получить данные в реальном времени, чтобы убедиться, что входной поток не буферизован?
Я работаю в Windows XP и выше.
Я пытался
for (;;) {
int c = is.read();
if (c < 0) {
break;
}
System.out.print(c);
System.out.flush();
}
if (true) {
return;
}
, а также пытался
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
synchronized (lastActivityTime) {
lastActivityTime = java.util.Calendar.getInstance().getTimeInMillis();
}
if (pw != null) {
pw.println(type + line);
pw.flush();
}
}