如何从字符串路径获取dirent结构?

时间:2011-03-17 22:14:39

标签: c++ linux dirent.h

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

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

那么实现这个目标的恰当方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您希望中的目录目录,请执行以下操作:

  1. stat(path)。记录st_devst_ino
  2. stat(path + "/..")。如果此st_dev不等于您为st_dev获得的pathpath是一个挂载点,我要说的其余内容将无效
  3. opendir(path + "/..")为您的父目录提供DIR*
  4. readdir,直到找到dirent d_ino等于你在步骤1中保存的st_ino。这就是你想要的。
  5. 但是,从这个算法中获得的唯一一条信息就是在其父目录中的目录名称。并且有一种更简单的方法来获取该信息:调用realpath()以规范化路径,然后提取结果的最后一个组成部分。挂载点或符号链接也没有问题。

答案 1 :(得分:1)

重复readdir(),直到您到达名为dirent的{​​{1}},这是目录本身。要从shell中查看此内容,请键入.