我想使用C API按创建顺序读取目录中的文件,但我知道readdir()
没有指定读取顺序。所以我可以使用scandir()
来执行此操作,方法是在stat()
的2个d_name
字段上传递一个struct dirent
的比较函数并返回-1
,0
或1
确定首先创建的条目。
但我有两个问题:
struct dirent
有一个d_ino
字段。我是否可以比调用d_ino
更有效地使用stat()
字段获取创建时间?
比较函数的函数签名是int compare(const struct dirent **, const struct dirent **);
似乎通过const
指针而不是const
双指针传递结构就足够了。有谁知道为什么结构由双指针传递而不是仅通过指针传递?
答案 0 :(得分:1)
没有可移植的方法直接从inode检索创建时间。
为了最大限度地减少stat()
系统调用的数量,请按以下步骤操作:
stat()
来初始化此数组,从条目和当前目录的相对路径组成完整文件名,并将创建时间和指针存储到条目名称。