有没有办法解析或读取目录作为文件?

时间:2009-10-08 00:56:23

标签: unix directory

这可能是一个微不足道的问题,但无论如何,我想知道是否有办法将目录作为文件读取,其中一个将使用open(),close(),read()而不是opendir( ),closedir(),readdir()......

我可能错了,但是,我认为这可以加速目录遍历。

由于

2 个答案:

答案 0 :(得分:2)

这实际上是Unix目录的工作原理。该目录实际上只是一个普通文件,您可以读出一个包含4字节inode编号和12字节文件名的(IIRC)16字节记录的平面数组。 opendir()和readdir()只是该接口周围的库函数。

但是从Sun在80年代中期推出VFS开始,不再只有一个文件系统了。相反,opendir和readdir变成了系统调用,并且读取目录的“原始”内容的能力消失了。

在任何情况下,文件系统作者都非常(!)努力使他们的代码快速。你无法在外部做任何“加速”此级别的目录遍历。我猜想尝试使用更少的文件。

答案 1 :(得分:0)

没有。除非您正在阅读ls的输出。