Порядок при использовании ls
with -U
flag тот же самый, который я получаю при использовании библиотеки dirent.h в C и отображении имен файлов в цикле. Когда я отображаю d_off
член структуры, dirent
числа отображаются в порядке возрастания.
Является ли это d_off
причиной порядка файлов, и если да, то в чем именно? Я видел, что это описывается как смещение файлов, но я не уверен, что это значит.
заранее спасибо
решение1
От man 3 readdir
:
d_off
Значение, возвращаемое в d_off, такое же, как и возвращаемое вызовом telldir(3) в текущей позиции в потоке каталога. Имейте в виду, что, несмотря на его тип и имя, поле d_off редко является каким-либо смещением каталога в современных файловых системах. Приложения должны рассматривать это поле как непрозрачное значение, не делая никаких предположений о его содержимом; см. также telldir(3).
Другими словами, d_off
и порядокэто одно и то же; это номер записи каталога, возвращаемый файловой системой для этого каталога.
Таким образом, порядок определяется самой файловой системой, которая может быть простой (например, в каталоге FAT12) или очень сложной (например, overlayFS поверх какой-либо сложной файловой системы).