rename (permission denied)
-
Und du hast sonst keine anderen Änderungen dran gemacht, denn das ist ja mehr als eigenartig?
-
passt jetzt nur zum vorherigen Beitrag
aber das ist mir beim Programmieren auch schon öfters aufgefallen, dass wenn
ich ein Programm schreibe, es compiliere und ausführe, manchmal
Fehler auftreten / es sich erst gar nicht compilieren lässt.
Lösche ich dann aber die "fehlerhafte" Codesequenz und schreibe
sie exakt wie zuvor wieder hin, dass dann häufig das Programm problemlos läuft
Hat jemand ne Ahnung, woran das liegt?
-
jzd schrieb:
Hat jemand ne Ahnung, woran das liegt?
dann machst du etwas falsch
-
bei mir muss da problem an dem liegen:
//(A)
void foo(){ FILE *p = fopen(..); //do Something flcose(p); rename(A,B); //wobei sich die zu unbennennede datei um die datei die zuvor geöfent wurde handelt }
Dann kann die Datei aus irgend einen grund nich unbenannt werden, weil sie anscheinend noch in gebrauch ist.
Mach ich es so:void bar(){ FILE *p = fopen(..); //do Something flcose(p); }; void foo(){ bar(){; rename(A,B); };
Klappt es. Wahrscheinlihc wird die Datei bzw. das Handle auf die Datei nach dem beenden der funktion Bar() erst "ricthig" freigeben, umd sie umbennnen zu können.
Aber ist nur ne vermutung, vll. kennt ja jemand die richtig lösung;)
-
Vielleicht mal die Rückgabe der Funktionen anschauen?
-
hmm... fclose liefert 0, also ok!
-
Und rename()?
-
haja rename liefst -1 == permission denied , siehe Thread überschrieft
für dich
//1. Schritt fclose(file); //liefert 0 d.h. Datei wurde geschlossen //2. Schritt (ich nehme an die datei ist nur freigegeben um sie unzubennen) //3. Schritt rename(A,B); //liefer -1 //4. Schritt (Datei wurde freigeben aber kann nicht unbenannt werden)
Kapiert?;))
-
Sorry, ich lese z.Z. sehr unaufmerksam
-
Und was passiert, wenn du zwischen fclose() und rename() mal einen Sleep(1) einbaust?
Das Blockende kann auf keinen Fall daran etwas ändern. In C++ könnte dort ja noch ein Destruktor aufgerufen werden, aber in C gibt es das ja definitiv nicht.
-
jepp das habe ich auch schon vesrucht , hab schon ein sleep(60000); eigenbaut.. aber selbst ne minute reicht nicht...
-
also bei mir läuft das auch ohne irgendwelchen sleep hickhack