c - 安全读取目录内容

标签 c file filesystems

在目录中创建或删除文件时,通过 readdir() 或 scandir() 读取目录条目是否安全?我应该更喜欢其中之一吗?

编辑:当我说“安全”时,我的意思是这些函数返回的条目是有效的并且可以在不导致程序崩溃的情况下运行。

谢谢。

最佳答案

这取决于您所说的“安全”。从某种意义上说,它们是安全的,它们不应使您的程序崩溃。但是,如果您在读取/扫描该目录时创建/删除文件,则您返回的文件集可能不是最新的。

当读取/扫描目录以查找目录条目时,文件指针(目录只是一种特殊类型的文件)向前移动。但是,根据文件系统的不同,可能没有什么可以阻止在文件指针后面的空目录条目槽中创建新文件。因此,新添加的目录条目可能不会立即被 readdir()/scandir() 检测到。类似的推理适用于文件删除/目录条目删除。

希望这对您有所帮助。

关于c - 安全读取目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501828/

相关文章:

c - c中的迭代目录遍历

ios - iOS如何为存储在磁盘上的文件添加日期和名称元数据?

c - 如何编写长信号和长核卷积的 C 代码

c - C 中没有任何指针的无限数组索引

python - JupyterHub 内核对用户安全吗?

c++ - 正如在 c 中解释的那样

c# - 如果通过窗口资源管理器打开,则关闭文件

python - 为什么文件对象在 python 中是它们自己的迭代器?

Java 图像 IO : can't read input file

macos - 文件名 os x 中的不同 utf8 编码