我们可以像在 Unix/Linux 中的任何其他文件一样在目录上使用read()
,吗?write()
我在这里感到困惑,因为目录也被视为文件。
答案1
某些文件系统允许在目录上使用read()
,但这必须被视为错误,因为此类目录中的数据结构可能没有记录。
您永远不能使用,write()
因为这会破坏受影响目录的完整性。
目录的官方接口是opendir(), closedir() readdir(), telldir(), seekdir()
答案2
不是真的不是,有专门的
directory, opendir, closedir, dirfd, fdopendir, readdir, readdir_r,
rewinddir, seekdir, telldir(3) - directory operations
用于目录操作的函数(来自 OpenBSD)和现代文件系统(或者实际上是十年、两年或更长时间内的任何东西)绝不会将目录编码为普通文件。
答案3
我有一本 1986 年的书,其中引用了read()
用于读取目录的用法。它的名字叫UNIX操作系统的设计第 10 页提到了这种用法,但此代码在我的现代 Ubuntu 上不起作用。
询问 Google 和 GPT 似乎在 1988 年就已经有专门的readdir()
功能了,所以现在已经改变了。