gpt4 book ai didi

c - 如何使用 scandir 在创建顺序中检索文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:48 24 4
gpt4 key购买 nike

我想使用 C API 按创建顺序读取目录中的文件,但我知道 readdir() 没有指定读取顺序。因此,我可以使用 scandir() 来执行此操作,方法是传递一个比较函数,该函数会在 的 2 个 d_name 字段上执行 stat() struct dirent 并返回 -101 以确定首先创建的条目。

但是我有两个问题:

  1. struct dirent 有一个 d_ino 字段。我可以使用 d_ino 字段比调用 stat() 更有效地获取创建时间吗?

  2. compare 函数的函数签名是 int compare(const struct dirent **, const struct dirent **); 这似乎是通过 const< 传递结构 指针而不是 const 双指针就足够了。有谁知道为什么结构是通过双指针而不是仅仅通过指针传递的?

最佳答案

没有直接从 inode 检索创建时间的可移植方法。

为了尽量减少 stat() 系统调用的次数,请遵循以下步骤:

  • 分配一个结构数组,其中包含创建时间和指向文件名的指针。
  • 通过为每个条目迭代调用 stat() 来初始化这个数组,由条目的完整文件名和当前目录的相对路径组成,并存储创建时间和指向条目的指针姓名。
  • 使用临时排序函数对该数组进行排序。
  • 列出该表中的条目。

关于c - 如何使用 scandir 在创建顺序中检索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com