Die Reihenfolge bei Verwendung ls
mit -U
Flag ist dieselbe Reihenfolge, die ich erhalte, wenn ich die dirent.h-Bibliothek in C verwende und Dateinamen in einer Schleife anzeige. Wenn ich d_off
Mitglieder der dirent
Struktur anzeige, scheinen die Zahlen in aufsteigender Reihenfolge zu sein.
Gibt es einen d_off
Grund für die Reihenfolge der Dateien und wenn ja, was ist dieser genau? Ich habe gesehen, dass es als Dateiversatz beschrieben wird, bin mir aber nicht sicher, was das bedeutet.
Dank im Voraus
Antwort1
Aus man 3 readdir
:
d_aus
Der in d_off zurückgegebene Wert ist derselbe, der zurückgegeben würde, wenn telldir(3) an der aktuellen Position im Verzeichnis-Stream aufgerufen würde. Beachten Sie, dass das Feld d_off trotz seines Typs und Namens auf modernen Dateisystemen selten eine Art Verzeichnis-Offset ist. Anwendungen sollten dieses Feld als undurchsichtigen Wert behandeln und keine Annahmen über seinen Inhalt treffen; siehe auch telldir(3).
Mit anderen Worten, d_off
und die Bestellungsind dasselbe; es ist die Nummer des Verzeichniseintrags, die vom Dateisystem für dieses Verzeichnis zurückgegeben wird.
Die Reihenfolge wird daher durch das Dateisystem selbst definiert – und das kann einfach (z. B. in einem FAT12-Verzeichnis) oder sehr komplex (z. B. ein Overlay-FS über einem komplexen Dateisystem) sein.