2015-09-10 51 views
0

给定一个目录,我该如何检查它是否为空。我可以在用户空间中做到这一点(使用opendir和readdir等效的dirent结构),但我应该怎么做在内核空间?如何检查Linux内核中的目录是否为空?

+0

请注意,您将需要锁定目录的inode,而根据答案做任何你正在做的事情,否则答案可能会从你下面改变。 – caf

回答

1

如果您阅读了openndir和readdir的源代码,您会发现它们最终会调用API调用getdents()。阅读系统调用getdents()的源代码以获得答案。如果您位于VFS层的应用程序端(试图从较低层调用将最终陷入死锁),则应该能够将目录调用的VFS inode句柄中的getdents循环复制到VFS层。我很久以前就做过。

相关问题