OD-Emulation für Verzeichnisse

OD-Emulation für Verzeichnisse

Ich habe mich gefragt, warum od(1) unter UNIX funktionierte, aber nicht unter GNU/Linux. Es gibt eine nette Antwort aufServerfehler. Die nächste Frage lautet: Kennen Sie Tools, die das OD-Verhalten emulieren können, um das Dumping von Verzeichnisdaten in GNU/Linux zu unterstützen?

Antwort1

Linux lässt kein einfaches Skript zu read(dir_name, buffer, sizeof(buffer)– es gibt immer -1 zurück und fügt EISDIR ein errno. Das ist wahrscheinlich vernünftig, da nicht alle Dateisysteme Verzeichnisse als Dateien haben. Das häufig verwendete Reiserfs hat dies beispielsweise nicht.

Sie können den open()Systemaufruf eines C-Programms verwenden, um einen Dateideskriptor eines Verzeichnisses abzurufen, aber Dinge wie readdir(3)(von libc) rufen getdents(2)tatsächlich Verzeichniseinträge ab. In jeder Dateisystemimplementierung gibt es wahrscheinlich Code, um struct linux_direntaus dem, was das Dateisystem zum Speichern von Verzeichniseinträgen verwendet (eine Datei, eine Datenbank, ein B-Baum auf der Festplatte), etwas zu erstellen.

verwandte Informationen