readdir()とは
POSIXにはreaddir()というシステムコールがあり,
FUSEでファイルシステムを作るときにも登場します.
readdir()を簡単に説明しまます.
ファイルのopenとread
fopen()でファイルを開き,fread()でそのファイルから読み込むと,ファイルの中身(バイトデータ)が次々と得られます.
ディレクトリのopenとread
opendir()でディレクトを開き,readdir()でそのディレクトリから読み込むと,ディレクトリの中身(中のファイルやディレクトリ)が次々と得られます.
サンプル
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main(){
DIR *dp;
struct dirent *dent;
if( (dp=opendir(".")) == NULL ){
perror("dir cannot open.");
exit(1);
}
while ((dent = readdir(dp)) != NULL){
printf("%s\tinode %ld,\td_type %2d\n", dent->d_name, dent->d_fileno, dent->d_type);
}
closedir(dp);
return 0;
}
まず,opendir() でディレクトリを開きます.
戻り値は,DIR型のポインタです.
戻り値のDIR型ポインタを引数に,readdir()を繰り返すと,
ディレクトリの中のファイル(やディレクトリ)が次々と得られます.
readdir()の戻り値は、dirent型のポインタです.
dirent型のデータの中には
などが含まれています.
この記事が気に入ったらサポートをしてみませんか?