Caros,
Estou com o seguinte problema:
Tenho um programa feito em C++ que está preparado para trabalhar ou linha de comando. Ou seja, para trabalhar escrevendo dados na tela e esperando que outros comandos sejam enviados para ele.
Este programa está preparado para trabalhar da seguinte maneira: Escreve uma string na tela, lê um caracter. Escreve uma string na tela, lê um caracter…
Eu quero controlar esse programa através do Java. Ou seja, quero que o Java execute-o e, enquanto ele é executado, leia as saídas do meu programa em C++ e, de acordo com as saídas, envie um comando diferente.
Eu tentei fazer isso da seguinte maneira:
Process p = new ProcessBuilder("programa.exe").start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
String line = "";
while(true) {
while ((line = br.readLine()) != null) {
System.out.println(line);
break;
}
if (line.equals("frase")) bw.write('c');
else break;
}
O problema é o seguinte: o Java espera o “programa.exe” terminar para pegar suas saídas. Só que eu não posso esperar o programa terminar, já que eu quero enviar comandos para ele.
Como eu posso resolver esse problema?