当前位置: 技术问答>linux和unix
关于readdir读出时的排序问题
来源: 互联网 发布时间:2017-02-13
本文导语: linux 下 readdir 读出的文件或目录是按什么方式排序的啊?创建时间?还是?我想得到比较权威的观点,现在在做一个项目,感觉用这个函数非常好,现在苦于不知道readdir读出文件的排序方式。 | ...
linux 下 readdir 读出的文件或目录是按什么方式排序的啊?创建时间?还是?我想得到比较权威的观点,现在在做一个项目,感觉用这个函数非常好,现在苦于不知道readdir读出文件的排序方式。
|
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* filename (null-terminated) */
}
d_ino is an inode number. d_off is the distance from the start of the directory to this dirent. d_reclen is the size
of d_name, not counting the null terminator. d_name is a null-terminated filename.
是按照d_off 来排序的, 我写了个小程序作测试。
所以需要自己取排列循序
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* filename (null-terminated) */
}
d_ino is an inode number. d_off is the distance from the start of the directory to this dirent. d_reclen is the size
of d_name, not counting the null terminator. d_name is a null-terminated filename.
是按照d_off 来排序的, 我写了个小程序作测试。
#include
#include
#include
#include
main()
{
DIR *dir;
struct dirent *ptr;
int i;
dir =opendir(".");
while((ptr = readdir(dir))!=NULL)
{
printf(" d_off:%d d_name: %sn", ptr->d_off,ptr->d_name);
}
closedir(dir);
}
所以需要自己取排列循序
|
这个讲的好
|
The output of the code above could be:
上述代码将输出下面的结果:
filename: .
filename: ..
filename: cat.gif
filename: dog.gif
filename: food
filename: horse.gif