Ler saída ao vivo do processo em java
Inicio um script python no meu aplicativo java com
Process p = Runtime.getRuntime().exec("python script.py");
Este script é executado em um loop e é cancelado apenas por um evento (ou interação do usuário). O script grava na saída todo ciclo de loop, algum texto como "12:22:35 - Pulsação do coração"
while True:
print("Heartbeat")
time.sleep(1)
No meu aplicativo Java, quero ler esta saída como ela aparece. Meu problema é que, se eu usar o BufferReader, ele aguardará a conclusão do processo e, depois disso, lerá a saída. Aqui está como eu li:
BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = is.readLine()) != null)
System.out.println(line);
Como posso ler a saída "ao vivo"?
Para uma melhor compreensão: o script python escuta em um botão de hardware e, quando esse botão é pressionado, algumas saídas são gravadas. E no meu aplicativo java, quero mostrar essa mensagem e enviá-la para alguns clientes.