当使用 ls 而不排序时,什么决定了文件的排序方式?

当使用 ls 而不排序时,什么决定了文件的排序方式?

ls与flag 一起使用时的顺序-U与我在 C 中使用 dirent.h 库并在循环中显示文件名时得到的顺序相同。当我显示结构体d_off成员时dirent,数字似乎按升序排列。

d_off文件顺序的原因是什么?如果是的话,具体是什么?我看到它被描述为文件偏移量,但我不确定这意味着什么。

提前致谢

答案1

man 3 readdir


   d_off 中返回的值与在目录流中的当前位置调用telldir(3) 返回的值相同。请注意,尽管有其类型和名称,d_off 字段很少是现代文件系统上的任何类型的目录偏移量。应用程序应将此字段视为不透明值,对其内容不做任何假设;另请参见telldir(3)。

换句话说,d_off以及顺序是同一件事;它是文件系统为该目录返回的目录条目的编号。

因此,顺序是由文件系统本身定义的 - 这可能很简单(例如,在 FAT12 目录中)或非常复杂(例如,某些复杂文件系统上的 OverlayFS)。

相关内容