[英]readdir: how do I know if it is a file or directory
檢查d_type
是否為D_DIR
。
dirent包含成員d_type,如果它是文件,則其值可以為0x8,因此:
struct dirent *DirEntry;
...
if ( DirEntry->d_type == 0x8)
//is a file
這取決於標准的“ POSIX” readdir操作,您沒有字段d_type
根據POSIX,Dirent結構包含一個未指定大小的字段char d_name [],>在終止空字節之前最多包含NAME_MAX個字符。 POSIX.1-2001還記錄了字段ino_t d_ino作為XSI擴展。 使用其他>字段將損害程序的可移植性。
“標准方法”是對文件/目錄進行lstat調用,並檢查struct stat的st_mode字段,如果您的st_mode與S_ISDIR匹配,則您有目錄。
您還可以為目錄中的每個條目計算路徑(但也許可以跳過.
& ..
條目),並在該路徑上使用stat系統調用。
如果您想要有關路徑的更多信息(例如,修改時間,大小等),此功能將非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.