Thread Sicheres Löschen (25 answers)
Opened by bianca at 2013-04-07 09:48

Raubtier
 2013-04-07 13:00
#166923 #166923
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
Hallo Bianca,

du hast ja immer merkwürdige Probleme :-)

Unter Windows:
Du öffnest die Datei - und dann kannst du sie nicht löschen. Das ist soweit klar, denn soweit ich mich richtig erinnere, kann man unter Windows offene Dateien nicht löschen. Du öffnest und lockst sie aber (locking ist allerdings immer noch vom Dateisystem abhängig und funktioniert auch nur, wenn auch alle anderen Programme locken - es tut hier also nicht das, was du willst) - somit ist sie offen und kann nicht gelöscht werden.

Unter Linux:
Man kann offene Dateien löschen. Der Prozess, der die Datei geöffnet hat, kann weiterhin darin lesen oder schreiben, aber beim Schließen ist die Datei dann weg. Das ist eben anders als bei Windows. Du kannst aber mit dem lsof-Kommando sehen, welche Dateien gerade geöffnet sind. Mit lsof +L1 siehst du, welche Dateien gerade offen, aber gelöscht sind.

Und ein Hinweis zu dem ">Inappropriate ioctl for device<": das solltest du komplett ignorieren! Denn der Wert von $! ist nur bei Fehlern aussagekräftig (er kommt auch schon vom sysopen). Da aber kein Fehler aufgetreten ist, bringt er dir nichts.

Zur eigentlichen Frage: Dein Problem ist allgemein nicht zu lösen (denk auch mal an bestimmte Netzwerkdateisysteme, wo dir auch das lsof nichts bringen wird, wo du ggf. nicht einmal genau weißt, wo die Datei überhaupt gespeichert ist). Hast du vielleicht ein anderes, einfacheres Problem? Also zum Beispiel soll die Datei nur von ein paar Instanzen desselben Programmes gelöscht werden? Dann könntest du eine andere Datei flocken (z.B. irgendwas im temp. Verzeichnis) und abhängig davon löschen.

View full thread Sicheres Löschen