Hallo,
ich schreibe mir grad ein Programm mit dem man andere Programme ausführen kann... Für dieses Programm sollen dann Callbacks (Batch-Dateien) ausgeführt werden... Jeweils vor und nach dem eigentlichen Programm!
Dazu erzeuge ich mir einen Thread indem nacheinader die Callbacks bzw das Programm ausgeführt wird.
Da die Prozesse in Abhängigkeit von einander sind, warte ich mit prozess.waitFor() darauf, dass ein Prozess beendet wird, sodass der nächste gestartet werden kann!
Dabei taucht folgendes Problem auf: Direkt nach dem Start-Callback bleibt das Programm hängen, auch die Batch-Datei scheint nicht ordnungsgemäß ausgeführt worden zu sein, da einige Dienste unter WindowsXP nicht gestartet wurden...
Wenn ich die Batchdatei normal ausführe funktioniert dies aber...
Hier mal die Threadklasse:
und ein Beispiel Bath-File:
Weiss jemand woran es liegen könnte?[/code]
ich schreibe mir grad ein Programm mit dem man andere Programme ausführen kann... Für dieses Programm sollen dann Callbacks (Batch-Dateien) ausgeführt werden... Jeweils vor und nach dem eigentlichen Programm!
Dazu erzeuge ich mir einen Thread indem nacheinader die Callbacks bzw das Programm ausgeführt wird.
Da die Prozesse in Abhängigkeit von einander sind, warte ich mit prozess.waitFor() darauf, dass ein Prozess beendet wird, sodass der nächste gestartet werden kann!
Dabei taucht folgendes Problem auf: Direkt nach dem Start-Callback bleibt das Programm hängen, auch die Batch-Datei scheint nicht ordnungsgemäß ausgeführt worden zu sein, da einige Dienste unter WindowsXP nicht gestartet wurden...
Wenn ich die Batchdatei normal ausführe funktioniert dies aber...
Hier mal die Threadklasse:
Code:
public class Exec extends Thread implements Runnable{
private Thread controller;
private String start; //Pfade auszuführenden Batch-Dateien bzw zur exe
private String prog;
private String end;
public Exec(String start, String prog, String end) {
this.start = start;
this.prog = prog;
this.end = end;
this.controller = new Thread (this);
this.controller.setPriority (Thread.MIN_PRIORITY);
this.start ();
}
@SuppressWarnings ("static-access")
@Override
public void run (){
try{
if (start != null){
Process p = Runtime.getRuntime ().exec (start);
p.waitFor ();
this.handle (p.getInputStream ());
}
if (prog != null){
Process p = Runtime.getRuntime ().exec (prog);
p.waitFor ();
}
if (end != null){
Process p = Runtime.getRuntime ().exec (end);
p.waitFor ();
this.handle (p.getInputStream ());
}
}catch (IOException ioe){
ioe.printStackTrace ();
}catch (InterruptedException ie){
ie.printStackTrace ();
}
try{
this.finalize ();
}catch (Throwable t){
t.printStackTrace ();
}
}
private void handle (InputStream is) throws IOException{
InputStreamReader isr = new InputStreamReader (is);
BufferedReader br = new BufferedReader (isr);
System.out.println (br.readLine ());
}
}
und ein Beispiel Bath-File:
Code:
net start DienstA
net start DienstB
net start DienstC
net start DienstD
Weiss jemand woran es liegen könnte?[/code]