Antworten:
In Unix sind alle normalen Dateien Hardlinks. Hardlinks in einem Unix-Dateisystem (und den meisten Dateisystemen?) Sind Verweise auf das, was als ein bezeichnet wird inode
. Der inode
hat einen Referenzzähler. Wenn Sie eine "Verknüpfung" mit der Datei haben (dies ist der normale Modus), ist der Zähler 1. Wenn Sie eine zweite, dritte, vierte usw. Verknüpfung erstellen, wird der Zähler jeweils inkrementiert (erhöht) Zeit für Zeit. Wenn Sie rm
einen Link löschen ( ), wird der Zähler um eins dekrementiert (reduziert). Wenn der Verbindungszähler 0 erreicht, entfernt das Dateisystem inode
den Speicherplatz und markiert ihn als verfügbar.
Kurz gesagt, solange Sie den letzten Link nicht löschen, bleibt die Datei erhalten.
Edit:
Die Datei bleibt auch dann erhalten , wenn der letzte Link entfernt wird . Dies ist eine der Möglichkeiten, um sicherzustellen, dass die Sicherheit der in einer Datei enthaltenen Daten keinem anderen Prozess zugänglich ist. Das vollständige Entfernen der Daten aus dem Dateisystem erfolgt nur, wenn die Daten 0 Verknüpfungen aufweisen, wie in den Metadaten angegeben, und von keinem Prozess verwendet werden.
Dieser IMHO ist bei weitem der einfachste Weg, Hardlinks (und deren Unterschied zu Softlinks) zu verstehen.
unlink
bearbeitet wird.
/proc
ein separates (virtuelles) Dateisystem darstellen.
unlink()
als ich in der ersten Hälfte der 90er Jahre anfing, mit C-Programmierung unter MS-DOS zu spielen, war ich bis zuletzt verwirrt, eine Datei zu löschen. :)
Das Testen war einfacher als ich dachte: Ich habe eine Textdatei erstellt und dann fest damit verknüpft. Durch das Löschen der festen Verknüpfung wird die Datei, mit der eine feste Verknüpfung besteht, nicht gelöscht, und die Datei, mit der eine Verknüpfung hergestellt wurde, verbleibt dort, wo sie ist.
Alle Dateien auf Ihrer Festplatte sind Zeiger auf die tatsächlichen Daten auf Ihrer Festplatte.
Wenn Sie einen Hardlink für diese Datei erstellen, zeigt die Hardlink-Datei auf dieselben Daten wie die Originaldatei.
Wie in diesem Beispiel zeigte a.txt auf die Daten (Bytes) der Datei, die sich auf dem Laufwerk befinden. Wenn der Hardlink b.txt erstellt wird, zeigt er auf das, auf das a.txt zeigte.
Das Entfernen eines von ihnen hat also keine Auswirkungen auf den anderen, von dem sie getrennt sind.
ABER, wenn Sie beide entfernen, wird das System feststellen, dass auf den Daten auf der Festplatte keine Datei vorhanden ist, die darauf verweist. Das System betrachtet sie daher als freien Speicherplatz und überschreibt sie, wenn es dies wünscht.
FILE "A.txt"
identisch ist LINK "B.txt"
, insbesondere, wenn Sie das eine FILE
und das andere als a bezeichnet haben LINK
. Der Link ist wirklich der schwarze Pfeil.
unlink()
.