WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 14.12.2004, 08:51   #1
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Zitat:
Original geschrieben von Satan_666
dass das löschen einer datei mittels unlink() gemacht wird, ist für mich ziemlich erstaunlich. wer lässt sich so einen namen für's löschen einer datei einfallen....?
Tja, da ist es immer gut, wenn man ueber ein wenig Hintergrundwissen verfuegt.

<Sinnloses Wissen fuer mind. 500 Euro>
Das Unix-Dateisystem unterscheidet zwischen Daten, die durch eine Inode beschrieben werden und Pfadnamen, die innerhalb von Verzeichnissen auf die Inodes verweisen. Eine Inode kann dabei mehrere Pfadnamen haben, was in der Unix-Terminologie Link genannt wird.

Unter Unix ruft "rm" intern den Systemruf unlink auf, der einen solchen Link und den zugehörigen Pfadnamen entfernt. Die Inode und die Datenblöcke werden aber erst freigegeben wenn
1. der letzte Link auf eine Inode entfernt wird und
2. kein Prozess mehr auf die Daten zugreift.
http://de.wikipedia.org/wiki/Rm_(Unix)

Aus der manpage von unlink:
Zitat:
unlink löscht einen Namen aus dem Dateisystem. Wenn dieser Name der letzte Verweis auf eine Datei war und kein Prozeß die Datei geöffnet hält, wird sie gelöscht und der von ihr belegte Speicherplatz wird für die weitere Benutzung verfügbar gemacht.

Falls dieser Name der letzte Link auf die Datei war und keine Prozesse die Datei geöffnet haben, dann ist die Datei gelöscht und der benötigte Speicherplatz wieder freigegeben.

Falls der Name der letzte Link auf die Datei war, aber immer noch Prozesse die Datei geöffnet haben, bleibt die Datei bestehen bis die letzte Dateikennzahl, die sich auf die Datei bezieht, geschlossen ist.

Falls der Name auf einen symbolischen Link verwies, so ist dieser Link entfernt.

Falls der Name auf einen Socket, Fifo oder Gerät verwies, so ist der Name für dieses entfernt, aber Prozesse, die dieses Objekt geöffnet haben, können es weiterhin benutzen.
http://www.linuxinfor.com/german/man2/unlink.html
Wobei ich die englische Manpage fuer aussagekraeftiger halte: http://www.opengroup.org/onlinepubs/...ns/unlink.html
</Sinnloses Wissen fuer mind. 500 Euro>

Und Erfunden haben das in diesem Fall nicht die Schweizer, sondern vermutlich Dennis Ritchie und Ken Thompson, die Vaeter von C und UNIX.

UNIX is simple and coherent, but it takes a genius (or at any rate a programmer) to understand and appreciate the simplicity.
Dennis Ritchie
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:44 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag