-
打開一個目錄
函數(shù)原型 DIR *opendir(const char *name)
DIR *fopendir(int fd)頭文件 #include <sys/types.h>#include <dirent.h>參數(shù) name:目錄名稱
fd:要打開目錄的文件描述符返回值 成功:返回一個指向目錄流的指針
失敗:返回空指針NULL -
關(guān)閉一個目錄
函數(shù)原型 int closedir(DIR *dirp)頭文件 #include <sys/types.h>#include <dirnet.h>參數(shù) dirp:要關(guān)閉的目錄的目錄流結(jié)構(gòu)體返回值 成功:返回 0
失?。悍祷?code>-1 -
獲取一個目錄流的文件描述符
函數(shù)原型 int dirfd(DIR *dirp)頭文件 #include <sys/types.h>#include <dirnet.h>參數(shù) dirp:要獲取文件描述符的目錄流返回值 成功:返回一個非負(fù)的文件描述符
失?。悍祷?code>-1 -
讀取一個目錄
函數(shù)原型 struct dirent *readdir(DIR *dirp);頭文件 #include <dirent.h>參數(shù) dirp:要讀取的目錄的目錄流返回值 成功:返回一個 dirnet結(jié)構(gòu)體的指針或者NULL,NULL意味著到了流的結(jié)束
失?。悍祷?code>NULL,并且設(shè)置想用的errno結(jié)構(gòu)體
dirent的內(nèi)容如下:struct dirent { ino_t d_ino; /* Inode number */ off_t d_off; /* Not an offset; see below */ unsigned short d_reclen; /* Length of this record */ unsigned char d_type; /* Type of file; not supported by all filesystem types */ char d_name[256]; /* Null-terminated filename */ };d_ino:文件(目錄)的inode數(shù)。d_off:該數(shù)據(jù)的值跟telldir返回的值相同,其含義為在目錄流的當(dāng)前位置。盡管它是一個off_t類型,我們應(yīng)該認(rèn)為這個值對我們是不透明的,不要做任何的假設(shè)。d_reclen:當(dāng)前記錄的大?。ㄒ宰止?jié)為單位)。它可能不匹配上面結(jié)構(gòu)體定義的大小。-
d_type:表示文件類型。使用此字段可以省去調(diào)用lstat來獲取文件的類型。-
DT_BLK:塊設(shè)備 -
DT_CHR:字符設(shè)備 -
DT_DIR:目錄 -
DT_FIFO: 管道 -
DT_LNK: 符號鏈接 -
DT_REG: 常規(guī)文件 -
DT_SOCK: socket文件 -
DT_UNKNOWN: 文件類型無法確認(rèn)
-
d_name:文件名稱,以NULL結(jié)尾。
- 重置目錄流
函數(shù)原型 voi rewinddir(DIR *dirp)頭文件 #include <sys/types.h>#include <dirnet.h>參數(shù) dirp:目錄流返回值 無
-
掃描一個目錄來匹配
函數(shù)原型 int scandir(const char *dirp, struct dirent ***namelist, int (*filter)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **));頭文件 #include <dirent.h>參數(shù) dirp:目錄名namelist:掃描目錄的結(jié)果filter:過濾函數(shù),對掃描結(jié)果進(jìn)行過濾compar:用于排序的比較函數(shù)返回值 成功:返回選擇的文件的數(shù)量
失?。?code>-1 -
設(shè)置下一次
readdir()調(diào)用的位置函數(shù)原型 void seekdir(DIR *dirp, long loc);頭文件 #include <dirent.h>參數(shù) dirp:要操作的目錄結(jié)構(gòu)體的指針loc:要設(shè)置的位置返回值 void -
返回當(dāng)前
readdir()讀到的位置函數(shù)原型 long telldir(DIR *dirp);頭文件 #include <dirent.h>參數(shù) dirp:要操作的目錄返回值 成功:目錄流的當(dāng)前位置
失敗:-1