Also ich hab ein etwas aussergewöhnliches Problem. Ich habe einen Java Prozess der sich nach einer gewissen Anzahl Durchgänge neu starten soll und seine Consolenausgaben in .txt Datein umleitet. Bei jedem Start werden zwei neue Files (Für Output und Error Stream) angelegt und der alte Prozess beendet sich mit System.exit(0) selbst. Dennoch bleiben alle Logfiles gesperrt solange immer wieder ein Nachfolgeprozess läuft. Dieses Problem besteht nur unter Windows unter Unix funktioniert das Verfahren.
Um das ganze etwas zu Veranschaulichen:
Nach X-Durchgängen starte ich mein Programm auf diese weise neu:
Nun legt der neue Prozess zwei neue Files an und schreibt seine Consolenausgaben in diese. Die alten Files der vorherigen Prozesse bleiben aber gesperrt und können nicht gelöscht oder verschoben werden. Wie gesagt das Problem besteht nur unter Windows.
MfG MasterChristian
Um das ganze etwas zu Veranschaulichen:
Nach X-Durchgängen starte ich mein Programm auf diese weise neu:
Java:
Date date = new Date(System.currentTimeMillis());
String LOGFILEPFAD = "C:\\Logfiles\\";
Runtime.getRuntime().exec("cmd /c java -jar C:\\meinProgramm.jar -Xmx1024M 1>" + LOGFILEPFAD + new SimpleDateFormat("yyyy.dd.MM-HH.mm.ss").format(date) + "log.txt" + " 2>" + LOGFILEPFAD + new SimpleDateFormat("yyyy.dd.MM-HH.mm.ss").format(date) + "err.txt");
System.exit(0)
Nun legt der neue Prozess zwei neue Files an und schreibt seine Consolenausgaben in diese. Die alten Files der vorherigen Prozesse bleiben aber gesperrt und können nicht gelöscht oder verschoben werden. Wie gesagt das Problem besteht nur unter Windows.
MfG MasterChristian