R
RolandOfGilead
Hallo zusammen,
ich bin ein wenig verzweifelt, weil ich keine Ahnung hab, wie ich dieses Problem löse. Folgendes:
Ich will in meinem Programm mittels Runtime.getRuntime().exec() eine externe .exe aufrufen, die eine Datei schreibt. Diese Datei brauch ich später im selben Programm.
Das Problem ist jetzt aber, dass exec() blockiert und ich während der Laufzeit die Datei nicht bekomme, egal wie lange der Prozess läuft. Ich habe diesen Thread http://www.tutorials.de/forum/java/141556-probleme-mit-laufenden-prozessen.html bereits gefunden, der löst aber mein Problem nicht.
Zur Verdeutlichung:
Würde ich jetzt irgendwo ein p.waitFor() einfügen, wäre das Programm in einer Endlosschleife weil der Prozess nicht endet; lasse ich das Programm einfach weiterlaufen, dann wird die Datei erst bei System.exit() erzeugt, und keine Sekunde vorher. Das .exe Programm ist fehlerfrei und tut auf der Kommandozeile genau das, was es soll, wird aber irgendwie von der JVM blockiert, so dass es unter java die Datei nicht sofort schreiben kann. Kann mir da jemand weiterhelfen?
ich bin ein wenig verzweifelt, weil ich keine Ahnung hab, wie ich dieses Problem löse. Folgendes:
Ich will in meinem Programm mittels Runtime.getRuntime().exec() eine externe .exe aufrufen, die eine Datei schreibt. Diese Datei brauch ich später im selben Programm.
Das Problem ist jetzt aber, dass exec() blockiert und ich während der Laufzeit die Datei nicht bekomme, egal wie lange der Prozess läuft. Ich habe diesen Thread http://www.tutorials.de/forum/java/141556-probleme-mit-laufenden-prozessen.html bereits gefunden, der löst aber mein Problem nicht.
Zur Verdeutlichung:
Code:
Runtime r = Runtime.getRuntime();
Process p;
try {
p = r.exec("Test.exe infile outfile"); //erzeugt eine Datei outfile
p.getErrorStream().close();
p.getOutputStream().close();
p.getInputStream().close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Würde ich jetzt irgendwo ein p.waitFor() einfügen, wäre das Programm in einer Endlosschleife weil der Prozess nicht endet; lasse ich das Programm einfach weiterlaufen, dann wird die Datei erst bei System.exit() erzeugt, und keine Sekunde vorher. Das .exe Programm ist fehlerfrei und tut auf der Kommandozeile genau das, was es soll, wird aber irgendwie von der JVM blockiert, so dass es unter java die Datei nicht sofort schreiben kann. Kann mir da jemand weiterhelfen?