在目录中创建或删除文件时,通过 readdir() 或 scandir() 读取目录条目是否安全?我应该更喜欢其中之一吗?
编辑:当我说“安全”时,我的意思是这些函数返回的条目是有效的并且可以在不导致程序崩溃的情况下运行。
谢谢。
最佳答案
这取决于您所说的“安全”。从某种意义上说,它们是安全的,它们不应使您的程序崩溃。但是,如果您在读取/扫描该目录时创建/删除文件,则您返回的文件集可能不是最新的。
当读取/扫描目录以查找目录条目时,文件指针(目录只是一种特殊类型的文件)向前移动。但是,根据文件系统的不同,可能没有什么可以阻止在文件指针后面的空目录条目槽中创建新文件。因此,新添加的目录条目可能不会立即被 readdir()/scandir() 检测到。类似的推理适用于文件删除/目录条目删除。
希望这对您有所帮助。
关于c - 安全读取目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501828/