Runtime.getRuntime() - Frage

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.
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();}
Danke
 
Zurück