Caruso_Nix
Mitglied
Hallo,
ich möchte Dateien ausführen lassen. Aber es soll erst im Code weitergehen, wenn der Prozess beendet ist. Zur Überwachung auf auf Zeitüberschreitung lasse ich einen Wächter im Hintergrund laufen, der zeitüberschreitende Prozesse killt.
Nun ist mir aufgefallen, dass, wenn ein einfaches "dir c:\" in der Datei enthalten ist, der Prozess nicht korrekt ausgeführt wird. Lasse ich allerdings das waitFor() weg, dann wird es korrekt ausgeführt. Aber ich kann es nicht weglassen, weil ich sonst die zeitüberschreitenden Prozesse nicht killen kann über den Interrupt. Eine Datei mit "echo dir " klappt allerdings ohne Probleme
Wie kann ich denn das Problem umgehen? Also wenn der Prozess ausgeführt ist, dann soll es weiter gehen im Code.
Danke
ich möchte Dateien ausführen lassen. Aber es soll erst im Code weitergehen, wenn der Prozess beendet ist. Zur Überwachung auf auf Zeitüberschreitung lasse ich einen Wächter im Hintergrund laufen, der zeitüberschreitende Prozesse killt.
Nun ist mir aufgefallen, dass, wenn ein einfaches "dir c:\" in der Datei enthalten ist, der Prozess nicht korrekt ausgeführt wird. Lasse ich allerdings das waitFor() weg, dann wird es korrekt ausgeführt. Aber ich kann es nicht weglassen, weil ich sonst die zeitüberschreitenden Prozesse nicht killen kann über den Interrupt. Eine Datei mit "echo dir " klappt allerdings ohne Probleme
Wie kann ich denn das Problem umgehen? Also wenn der Prozess ausgeführt ist, dann soll es weiter gehen im Code.
Code:
try
{
Process p = Runtime.getRuntime().exec("cmd.exe /C" + datei);
p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
for (String s; (s=in.readLine())!=null;)
System.out.println(s);
}
catch ( IOException ioe ) {}
catch (InterruptedException e){p.destroy();}