externes Programm beginnt erst nach dem ende des mainprogrammes

Freak82

Mitglied
Hallo alle zusammen,

habe hier ein mehr oder weniger schweres Problem, was ich mir nicht erklären kann.
Ich rufe mehrere externe Programm über eine Methode mit folgendem Code auf
Java:
ProcessBuilder pb = new ProcessBuilder("cmd","/c",command);
pb.directory(temp);
p = pb.start();
Dies klappt soweit auch bestens, nur das letzte Programm möchte nicht so recht mit dem obigen Code wird das Programm ausgeführt, hält jedoch in der mitte an, sobald ich dann die JVM schließe, wird der rest erst ausgeführt.
Leider klappt es auch nicht mit folgendem Code
Java:
p = Runtime.getRuntime().exec("cmd /c"+command);
Mit diesem Code hält das externe Programm in der mitte an und läuft auch nach dem beenden der JVM nicht mehr weiter.

Desweiteren habe ich auch versucht, das Programm und seine Parameter in eine externe .BAT Datei zu packen und diese dann aufzurufen, leider das selbe Ergebnis. :-(

Dem externen Programm werden ein Parameter, sowie eine TXT Datei übergeben, in dieser TXT Datei stehen verschiedene Kommandos, die das externe Programm ausführt, das externe Programm arbeitet im BATCH betrieb, und sobald diese Kommandos abgearbeitet werden tritt der hänger auf.

Wäre echt nett, wenn jemand von euch eine Abhilfe wüsste, bzw. mir auch erklären kann, woher dieses Phenomän kommt.

Besten Dank schonmal
 
Wenn du einen Prozess startest musst du dessen StdOut und StdErr Stream lesen. Tust du das nicht kann es dir passieren das irgendwann der Buffer für die Streams voll läuft und das Programm hängt.
 
Hey, also den StdOut des Prozesses lese ich (Buffered), ich dachte, wenn man StdErr nicht lies also mit keinem Buffer verbindet, macht das dem Programm nichts aus und der Inhalt landet irgendwo im Nirvana, werde morgen mal versuchen auch noch den StdErr zu lesen.
 
Hey super, vielen vielen Dank hat daran gelegen, das das externe Programm auf STDERR geschrieben hat und ich dort den Puffer nicht gelesen habe.
 

Zurück
Oben