ein Kapitel zurück                                           ein Kapitel weiter

Mit dieser Funktion löschen sie eine Datei von einem externen Speichermedium. Dabei kann jeder beliebige Pfadname angegeben werden. Hierzu der Syntax...

int unlink(const char *name);

Bei Fehler liefert diese Funktion -1 zurück andernfalls 0. Hierzu ein Programmbeispiel bei dem alle Programme, auch wenn sie den Pfad mit angeben, gelöscht (Sofern sie die Rechte dieser Datei besitzen) werden...

/*Download:unlink1.c*/
#include <stdio.h> #ifdef __unix__ #include <unistd.h> #elif __MSDOS__ #include <io.h> #endif int main(int argc, char *argv[]) { while(*++argv) { if(unlink(*argv) != -1) printf("%s wurde Erfolgreich gelöscht!\n",*argv); else printf("Konnte %s nicht löschen!\n",*argv); } return 0; }

Ausführen können sie das Programm z.B. mit...

Programmname test.txt kunden.dat /cprogramm/read.c hilfe.tmp

Hiermit löschen sie z.B die Dateien test.txt, kunden.dat, die Datei in dem Verzeichnis cprogramm mit dem Namen read.c und hilfe.tmp. Sie könne wenn sie wollen beliebig viele Dateien löschen. Doch Vorsicht, den unlink löscht eine Datei unwiderruflich. Diese können sie nicht wiederherstellen. Die mit unlink gelöschte Datei wird übrigens nicht sofort gelöscht, sondern erst wenn das Programm beendet wird. Diese Tatsache lässt sich übrigens gut ausnutzen, falls sie temporäre Dateien benötigen.....

fd=open("temp", O_RDWR);
unlink("temp");   //Die Datei "temp" wurde noch nicht gelöscht!!
    /*Sie können weiterhin mit Hilfe des Filedeskriptors
      auf die Datei temp zugreifen                     */

exit(0);   //Jetzt existiert die Datei "temp" nicht mehr

Für Linux/Unix....
Um den Dateinamen aus einem Directory zu löschen benötigen sie Schreib.- und Ausführrechte für dieses Directory. Weiterhin gilt sollte der für unlink angegebene Name ein symbolischer Link auf eine Datei sein so wird nur dieser gelöscht. Die Datei existiert weiterhin. Sollte sie ein Directory mit unlink löschen wollen so geht dies nur als Superuser.

Zu Dateien löschen habe ich ein extra Kapitel geschrieben. "Datei gelöscht! Wirklich?" Dieses soll zeigen das ein gelöschte Datei jederzeit wiederherstellbar sein kann.

Aufgabe
Schreiben sie für unser Programm oben eine Funktion die die Anzahl der Bytes oder KB zählt die wir gelöscht haben und diese am Ende unseres Programms auch ausgibt. Benutzten sie zum ermitteln der Größe einer Datei die Funktion lseek. KB bekommen sie wenn sie die Bytes/1024 rechnen. Hier geht es zur Lösung.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf