每当我使用 readdir 之类的函数列出目录的内容时,返回的文件名也包括“。” 和 ”..”。我怀疑这些只是文件系统中的普通链接,因此与实际文件无法区分,但我总是必须将它们过滤掉,因为它们不是我列出的目录中的实际对象。像 readdir 这样的函数是否有充分的理由包含它们?某些操作系统或文件系统是否包含更多或不同的虚拟文件名?除了与“。”进行字符串比较之外,还有更好的方法来过滤掉它们吗?和 ”..”?
更新:谢谢大家的回答。我想我一直认为像 ./ 和 ../ 这样的东西只是可以通过搜索和替换来处理的约定。我觉得让它们成为文件系统本身的一部分有点令人惊讶,尽管可能更有效和透明。
不过,一个问题仍然存在:因为 . 和 .. 是这些链接的任意名称,是否存在使用不同名称的文件系统?