


Warum können Linux-Hardlinks keine Verzeichnisse verknüpfen?
Grund: Das Herstellen einer festen Verbindung zum Verzeichnis kann zu einer Schleife im Verzeichnis führen. Wenn das Verzeichnis durchlaufen wird, gerät das System in eine Endlosschleife, was dazu führt, dass das Verzeichnis, auf das zugegriffen wird, nicht gefunden werden kann. Die Verzeichnisstruktur von Linux ist ein Baum mit „/directory“ als Stammknoten. Wenn benutzerdefinierte feste Links zulässig sind, wird diese Struktur wahrscheinlich zerstört und es entsteht sogar eine Schleife, die Befehle durchlaufen müssen Verzeichnisbaum wird, ist fatal. Um eine Beschädigung der Verzeichnisbaumstruktur zu vermeiden, erlaubt Linux Benutzern daher nicht, Hardlinks im Verzeichnis anzupassen.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Der harte Link von LINUX kann nicht mit dem Verzeichnis verknüpft werden, da die Einführung eines festen Links zum Verzeichnis zu einer Schleife im Verzeichnis führen kann. Wenn das Verzeichnis durchlaufen wird, gerät das System in eine Endlosschleife die Unfähigkeit, das Zugriffsverzeichnis zu finden.
Im Linux-System entspricht jede Datei (Verzeichnis ist auch eine Datei) einer Inode-Struktur. Die Inode-Datenstruktur enthält Informationen über den Dateityp (Verzeichnis, normale Datei, symbolische Linkdatei usw.). , Das Betriebssystem kann beim Durchlaufen des Verzeichnisses symbolische Links ermitteln. Natürlich können einige Maßnahmen ergriffen werden, um übermäßige Schleifen zu verhindern. Das System stoppt den Durchlauf Warum das Verzeichnis Der Grund, warum symbolische Links nicht in eine Endlosschleife gelangen. Bei harten Verbindungen ist es jedoch aufgrund der Einschränkungen der Datenstruktur und des im Betriebssystem verwendeten Algorithmus derzeit unmöglich, diese Endlosschleife zu verhindern.
Das Wesen der harten Verbindung unter Linux
Bevor wir das Problem besprechen, sprechen wir über das Wesen der harten Verbindung.
Der Hardlink ist eigentlich der Inhalt des Blocks, auf den der Inode des Verzeichnisses zeigt. Jeder Datensatz im Verzeichnisblock ist ein fester Link. Das Verzeichnis selbst ist eine Art Datei in Linux (Verzeichnisdatei, Symbol d), und der Dateiinhalt der „Verzeichnisdatei“ ist ein fester Link.
Zum Beispiel (achten Sie auf die Änderung der Anzahl der Verzeichnisverbindungen im Bild):
Das Diagramm vor und nach der Änderung der Anzahl der tmp-Verzeichnisverbindungen sieht wie folgt aus (die rote Linie zeigt die Quelle an). der Verbindungsnummer):
Wie Sie dem obigen Beispiel entnehmen können: Wenn ein Verzeichnis zum ersten Mal erstellt wird, beträgt die Anzahl der Hardlinks 2, von denen einer aus dem übergeordneten Verzeichnis und der andere aus seinem eigenen stammt. ." Wenn Sie ein Unterverzeichnis für das Verzeichnis erstellen, beträgt die Anzahl der festen Verbindungen +1 und wird 3. Dies liegt daran, dass es eine zusätzliche „..“-Verbindung aus dem Unterverzeichnis gibt.
Manche fragen sich an dieser Stelle vielleicht: Bedeutet das nicht, dass Hardlinks nicht für Verzeichnisse verwendet werden können? Was ist mit der obigen Demo los?
Hier muss ein Konzept geklärt werden: „Hardlinks können nicht für Verzeichnisse verwendet werden“, was bedeutet, dass Hardlinks zu Verzeichnissen nicht von Benutzern angepasst werden können, sondern nur vom Betriebssystem verwaltet werden können. Tatsächlich sind Verzeichnisse und Hardlinks untrennbar miteinander verbunden und integriert. Der „Hardlink“ selbst ist eigentlich die Art und Weise, wie ein Verzeichnis seine Unterdateinamen und Unterverzeichnisnamen verwaltet.
Der Albtraum benutzerdefinierter Hardlinks: Schleifen
Nachdem wir über die Natur von Hardlinks gesprochen haben, können wir zum heutigen Thema zurückkehren: Warum dürfen Benutzer die Hardlinks von Verzeichnissen nicht anpassen?
Wir wissen, dass die Verzeichnisstruktur von Linux ein Baum mit „/directory“ als Wurzelknoten ist. Wenn benutzerdefinierte Hardlinks zulässig sind, kann es sein, dass diese Struktur zerstört wird oder sogar eine Schleife entsteht, wenn beispielsweise der folgende Befehl ausgeführt wird kann erfolgreich ausgeführt werden. Wörter:
Sobald eine Schleife gebildet wird, ist sie für Befehle, die den Verzeichnisbaum durchlaufen müssen, fatal (z. B. der Befehl du, der von oben nach unten durchläuft, und der Befehl pwd). verläuft von unten nach oben). Um eine Beschädigung der Verzeichnisbaumstruktur zu vermeiden, erlaubt Linux Benutzern daher nicht, Hardlinks im Verzeichnis anzupassen. Der Grund, warum Softlinks diese Einschränkung nicht haben, liegt darin, dass Softlinkdateien einen speziellen Dateityp haben, der vom System erkannt werden kann, während sich „Hardlinkdateien“ nicht von normalen Dateien des Systems unterscheiden und nicht beurteilt werden können.
Verwandte Empfehlungen: „Linux-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWarum können Linux-Hardlinks keine Verzeichnisse verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

Verwenden Sie Python im Linux -Terminal ...

Konfigurieren Sie die Timing -Timing -Timing -Timing -Timing auf der MacOS -Plattform, wenn Sie die Timing -Timing -Timing -Timing von APScheduler als Service konfigurieren möchten, ähnlich wie bei NGIN ...

In Bezug auf das Problem der Entfernung des Python -Dolmetschers, das mit Linux -Systemen ausgestattet ist, werden viele Linux -Verteilungen den Python -Dolmetscher bei der Installation vorinstallieren, und verwendet den Paketmanager nicht ...

Multithreading in der Sprache kann die Programmeffizienz erheblich verbessern. Es gibt vier Hauptmethoden, um Multithreading in C -Sprache zu implementieren: Erstellen Sie unabhängige Prozesse: Erstellen Sie mehrere unabhängig laufende Prozesse. Jeder Prozess hat seinen eigenen Speicherplatz. Pseudo-MultitHhreading: Erstellen Sie mehrere Ausführungsströme in einem Prozess, der denselben Speicherplatz freigibt und abwechselnd ausführt. Multi-Thread-Bibliothek: Verwenden Sie Multi-Thread-Bibliotheken wie PThreads, um Threads zu erstellen und zu verwalten, wodurch reichhaltige Funktionen der Thread-Betriebsfunktionen bereitgestellt werden. Coroutine: Eine leichte Multi-Thread-Implementierung, die Aufgaben in kleine Unteraufgaben unterteilt und sie wiederum ausführt.

Um eine Web.xml -Datei zu öffnen, können Sie die folgenden Methoden verwenden: Verwenden Sie einen Texteditor (z.
