当前位置:  开发笔记 > 编程语言 > 正文

为什么目录列表包含当前(.)和父(...)目录?

如何解决《为什么目录列表包含当前(.)和父()目录?》经验,为你挑选了2个好方法。

每当我使用readdir之类的函数列出目录的内容时,返回的文件名也包含".".和"......".我怀疑这些只是文件系统中的普通链接,因此与实际文件无法区分,但我总是要将它们过滤掉,因为它们不是我列出的目录中的实际对象.readdir这样的函数是否有充分理由包含它们?某些操作系统或文件系统是否包含更多或不同的虚拟文件名?除了通过与"."进行字符串比较之外,还有更好的方法来过滤掉它们.和".."?

更新:谢谢大家回答.我想我一直认为像./和../之类的东西仅仅是可以通过搜索和替换来处理的约定.我觉得让它们成为文件系统本身的一部分有点令人惊讶,尽管可能更有效和透明.

但是,有一个问题仍然存在:和..是这些链接的任意名称,是否有使用不同的文件系统?



1> Johannes Sch..:

.并且..实际上是文件系统中的硬链接.它们是必需的,以便您可以根据某些参考路径指定相对路径(考虑"../sibling/file.txt").由于这些硬链接实际存在于文件系统中,因此有readdir必要告诉您它们.(实际上这个术语hard link只是意味着一些与所引用的实际目录无法区分的名称:它们inode在文件系统中都指向相同的名称).

strcmp如果你不想列出它们,最好的方法就是忽略它们.



2> Darron..:

最初它们是硬链接,以及文件系统代码中的特殊情况数量.而且......很小.然而,对于所有现代文件系统而言,情况并非如此.

但是已经建立了这些约定,即使这两个目录条目实际上不存在的文件系统仍然通过readdir等API报告它们的存在.改变这个现在会打破很多代码.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有