poseidonTU
Grünschnabel
Ich habe folgendes Problem: Ich starte unter Windows eine .exe die ein pdf drucken soll mittels Runtime.exec(). Zum Auslesen der stdOut und stdErr Streams verwende ich zwei Threads, in deren Runnable.run() ich folgendes mache:
Mein Problem ist nun, dass die genannte .exe teilweise recht lange läuft und dabei ständig Output produziert ("Printing page XX " usw). Diese Zeilen kommen, wenn ich die .exe manuell ausführe in regelmäßigen Abständen (etwa 5-6/Sekunde). Wenn ich die .exe aber von Java aus starte erhalte ich den gesamten Output erst wenn die .exe terminiert hat. Solange die .exe noch läuft blockiert der allererste Aufruf der br.readLine() Methode.
Gibt es irgendeine Möglichkeit den Output instant weiterzugeben? Oder ist das irgendein Problem dieser .exe?
mfg poseidon
Java:
// is ist der stdOut/stdErr Stream des child prozesses
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ((line = br.readLine()) != null)
{
System.out.println(">>>" + line);
}
Mein Problem ist nun, dass die genannte .exe teilweise recht lange läuft und dabei ständig Output produziert ("Printing page XX " usw). Diese Zeilen kommen, wenn ich die .exe manuell ausführe in regelmäßigen Abständen (etwa 5-6/Sekunde). Wenn ich die .exe aber von Java aus starte erhalte ich den gesamten Output erst wenn die .exe terminiert hat. Solange die .exe noch läuft blockiert der allererste Aufruf der br.readLine() Methode.
Gibt es irgendeine Möglichkeit den Output instant weiterzugeben? Oder ist das irgendein Problem dieser .exe?
mfg poseidon
Zuletzt bearbeitet: