gpt4 book ai didi

c++ - 如何从字符串路径中获取 dirent 结构?

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:17 30 4
gpt4 key购买 nike

如果给定一个 std::string 形式的目录路径,我如何获得指向该目录的 dirent 结构?

我可以先使用 opendir() 获取所需目录的 DIR*。然后我可以在我的 DIR* 上使用 readdir(),但它会尝试返回 DIR* 中的条目,而不是 DIR* 本身。

那么实现这一目标的适当方法是什么?

最佳答案

如果您希望目录本身在其父级中的目录条目,请执行以下操作:

  1. 统计(路径)。记录st_devst_ino
  2. stat(path + "/..")。如果此 st_dev 不等于您为 path 获得的 st_dev,则 path 是一个挂载点,并且我接下来要说的其他内容都行不通。
  3. opendir(path + "/..") 为您提供父目录的 DIR*
  4. readdir 直到找到 d_ino 等于您在步骤 1 中保存的 st_inodirent . 这就是你想要的。

不过,您从该算法中获得的唯一一条信息是仅执行第 1 步无法获得的信息,即目录在其父目录中的名称。还有一种更简单的方法来获取该信息:调用 realpath()规范化路径,然后提取结果的最后一个组成部分。挂载点或符号链接(symbolic link)也没有问题。

关于c++ - 如何从字符串路径中获取 dirent 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345921/

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