File lässt sichnicht löschen



  • Hallo,

    mit folgendem Code möchte ich eine Datei löschen:

    if((retValue = unlink(TITLE_REF)) == -1)
    	{
    		myError("remove() in refProg.c");
    		fprintf(stdout, "--%s: %s\n", strerror(errno), TITLE_REF);
    		exit(-1);
    	}
    

    leider wird immer die Fehlermeldung ausgeführt, also unlink() bzw. remove() geben immer -1 zurück.

    Die Datei erstelle ich mit ALLEN RECHTEN, allerdings in einem Programm A, von wo aus ich in Programm B wechsle per execl() und in Programm B eben mit obigem Code löschen möchte.

    Warum klappt das nicht?

    EDIT:

    Achso die Fehlermeldung habe ich ganz vergessen!
    **
    No such file or directory**

    Wie kann das sein? Statt der konstanten, habe ich auch schon direkt den PFad übergeben als String bzw. const char*. Immer das selbe.



  • ptfs1->fh1 = fopen(TITLE_REF, "w+");
    				chmod(TITLE_REF, S_IRWXU | S_IRWXG | S_IRWXO);
    				fclose(ptfs1->fh1);
    				sleep(5);
    	/* delete refFlag */
    	if((retValue = remove(TITLE_REF)) == -1)
    	{
    		myError("unlink() in refProg.c");
    		fprintf(stdout, "--%s: %s\n", strerror(errno), TITLE_REF);
    		exit(-1);
    	}
    				while((retValue = access(TITLE_REF, F_OK)) == 0);
    
    				printf("refFlag weg\n");
    

    Mit diesem Code erscheint folgende Ausgabe

    myError: unlink() in refProg.c
    --No such file or directory: refFlag
    refFlag weg

    Die ersten zwei Meldungen kann ich nicht nachvollziehen. Die Datei ist im Verzeichnis.

    Das "refFlag weg" ist eigentlich in Ordnung, nur dass die Datei noch im Verzeichnis zu sehen ist!

    Warum also erkennt access() die Datei nicht? Ich hab gelesen, dass unlink() und remove() Dateien nur löschen, wenn kein Prozess sie mehr offen hat. Das ist bei mir der Fall, die Datei schließe ich. Trotzdem verschwindet sie nicht. Ich brauch HILFE...



  • Ach und die Rechte für das Verzeichnis sind auch auf 777 gesetzt...



  • Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hat sich erledigt! War ein Logikfehler von mir...Schleifen können sehr tückisch sein... Der Code war richtig...deshalb konnte man auch keinen Fehler entdecken ^^


Log in to reply