2015-09-10 28 views
0

給定一個目錄,我該如何檢查它是否爲空。我可以在用戶空間中做到這一點(使用opendir和readdir等效的dirent結構),但我應該怎麼做在內核空間?如何檢查Linux內核中的目錄是否爲空?

+0

請注意,您將需要鎖定目錄的inode,而根據答案做任何你正在做的事情,否則答案可能會從你下面改變。 – caf

回答

1

如果您閱讀了openndir和readdir的源代碼,您會發現它們最終會調用API調用getdents()。閱讀系統調用getdents()的源代碼以獲得答案。如果您位於VFS層的應用程序端(試圖從較低層調用將最終陷入死鎖),則應該能夠將目錄調用的VFS inode句柄中的getdents循環複製到VFS層。我很久以前就做過。