如果以std :: string的形式给出目录路径,我如何获得指向该目录的dirent结构?
我可以从使用opendir()获取所需目录的DIR *开始。然后我可以在我的DIR *上使用readdir(),但是它会尝试在 DIR *中返回条目,而不是DIR *本身。
那么实现这个目标的恰当方法是什么?
答案 0 :(得分:2)
如果您希望父中的目录目录,请执行以下操作:
stat(path)
。记录st_dev
和st_ino
。stat(path + "/..")
。如果此st_dev
不等于您为st_dev
获得的path
,path
是一个挂载点,我要说的其余内容将无效opendir(path + "/..")
为您的父目录提供DIR*
。readdir
,直到找到dirent
d_ino
等于你在步骤1中保存的st_ino
。这就是你想要的。但是,从这个算法中获得的唯一一条信息就是在其父目录中的目录名称。并且有一种更简单的方法来获取该信息:调用realpath()
以规范化路径,然后提取结果的最后一个组成部分。挂载点或符号链接也没有问题。
答案 1 :(得分:1)
重复readdir()
,直到您到达名为dirent
的{{1}},这是目录本身。要从shell中查看此内容,请键入.
。