von FILE* zum Dateinamen?
-
Hallo,
Ich bekomm in einer callback Funktion einen FILE Pointer übergeben und würde nun gern die zugehörige Datei löschen. remove() benötigt aber den Dateinamen. Geht das irgendwie?
Danke schonmal
Janosch
-
Standard-C ist bei der Datei-Behandlung nicht unbedingt dein bester Freund wenn es um mehr als das Auslesen geht.
Am besten du verwendest Funktionen des jeweiligen Betriebssystems. Zum Beispiel DeleteFile() für Windows.
MfG SideWinder
-
Ja seh ich auch so. Nur hab ich hier eben bestehenden Programmcode und kann mir nicht aussuchen wie Dateien behandelt werden. Ich bekomme wie gesagt einen FILE* und würde gerne die zugehörige Datei löschen.
-
hm also ich denke nicht das dies so ohne weiteres möglich ist
-
aber eine interessante frage mal sehen was die hacker dazu zu sagen haben ob das irgendwie geht?
-
Die Hacker? Wir sind hier im C Forum und nicht im Hackerverein!
-
Diamond schrieb:
Die Hacker? Wir sind hier im C Forum und nicht im Hackerverein!
wieso ist hacker negativ oder böswillig ??
ist halt eine profi programmierer
-
Hmmmm... wäre nicht schlecht zu wissen, von welchem Betriebssystem zu redest. Unter Linux hätte ich zumindest spontan einen möglichen Ansatz im Kopf:
Du müsstest ja die pid des Prozesses haben, von welchem Du den filedescriptor erhälst. Unter /proc/pid/fd findest Du Deskriptoren, die zu einem Prozess gehören - bei den Dateien handelt es sich um symbolische Links, welche auf die Datei entsprechende Datei verweisen. Diese kannst Du dann mit readlink() auslesen, um den Dateinamen zu erhalten...
Wie gesagt, ist jetzt nur ein linuxspezifischer spontaner Einfall
Mfg, Lord Kefir
-
du müsstest deine datei als char array erst speichern, dann den array dazu verwenden um mit remove die datei zu löschen.
" remove ( array); "
Eigentlich voll easy.
Ich meine auch linux
-
Afaik kannst du nichtmal sicher sein, ob zu dem File-Deskriptor wirklich eine physikalische Datei gehört - stdin und stdout sind auch nur FILE*.
-
ich sag nur noch: Man kann alles coden
-
CStoll schrieb:
Afaik kannst du nichtmal sicher sein, ob zu dem File-Deskriptor wirklich eine physikalische Datei gehört - stdin und stdout sind auch nur FILE*.
... nicht zu vergessen stderr
-
Horst2 schrieb:
... nicht zu vergessen stderr
Und wenn wir schon dabei sind sollten wir auch nicht all die Sockets und Pipes vergessen... Und die Dateien die gelöscht wurden während sie noch offen sind.... Und..