witam mam problem piszę program który ma za zadanie wysyłać zapytania do innego programu wykonalnego, a ten będzie odpowiadał, jednak mam problem i nie do końca wiem jak go rozwiązać
załóżmy że mamy program echo.exe który przepisuje komendy
poniżej kod:
public static void main(String[] args) throws IOException {
String line;
OutputStream stdin = null;
InputStream stderr = null;
InputStream stdout = null;
Process process = Runtime.getRuntime ().exec ("./echo.exe");
stdin = process.getOutputStream ();
stderr = process.getErrorStream ();
stdout = process.getInputStream ();
// "write" the parms into stdin
line = "echo COS1" + "\n";
stdin.write(line.getBytes() );
stdin.flush();
line = "echo COS" + "\n";
stdin.write(line.getBytes() );
stdin.flush();
line = "echo COSIK" + "\n";
stdin.write(line.getBytes() );
stdin.flush();
stdin.close();
// clean up if any output in stdout
BufferedReader brCleanUp =
new BufferedReader (new InputStreamReader (stdout));
while ((line = brCleanUp.readLine ()) != null) {
System.out.println ("[Stdout] " + line);
}
brCleanUp.close();
System.out.println ("DZIEKUJE" );
}
jako wynik otrzymuję:
[Stdout] echo COS1
[Stdout]
[Stdout] echo COS
[Stdout]
[Stdout] echo COSIK
[Stdout]
[Stdout] # echo COS1
[Stdout]
[Stdout] COS1
[Stdout]
[Stdout] # echo COS
[Stdout]
[Stdout] COS
[Stdout]
[Stdout] # echo COSIK
[Stdout]
[Stdout] COSIK
[Stdout]
chciałbym żeby po wykonaniu poleceń wyświetliło się "DZIEKUJE"
jednak brCleanUp.readLine () czeka prawdopodobnie na nowe linie wyniku
czy ktoś ma może pomysł jak to zrealizować?
PS. problem został uproszczony tak aby łatwo było zrozumieć o co mi chodzi ;) program jest pewną częścią innego złożonego projektu nad którym pracuję, więc będę wdzięczny za pomoc.