名前
readdir - ディレクトリを読み込む
書式
#include <sys/types.h>
#include <dirent.h>
struct dirent *readdir(DIR *dir);
説明
readdir() 関数は、dir の指すディレクトリストリームの中で、 次のディレクトリエントリを表す dirent 構造体へのポインタを返す。 ファイルの最後に達した場合やエラーが発生した場合は NULL を返す。
Linux では dirent 構造体は以下のように定義されている:
struct dirent { ino_t d_ino; /* inode 番号 */ off_t d_off; /* 次の dirent へのオフセット */ unsigned short d_reclen; /* このレコードの長さ */ unsigned char d_type; /* ファイル種別 */ char d_name[256]; /* ファイル名 */ };
POSIX によると、 dirent 構造体にはサイズの明示されていない char d_name[] フィールドが含まれる。このフィールドには最大で NAME_MAX 文字と、それに続く終端の NULL バイトが格納される。 POSIX.1-2001 では XSI 拡張として ino_t d_ino フィールドについても記述している。 「他のフィールドを使用することは、 プログラムの可搬性を損なうことになるだろう」
readdir() によって返されるデータは、以降の同じストリームに対する readdir() の呼び出しによって上書きされる可能性がある。
返り値
readdir() 関数は dirent 構造体へのポインタを返す。 エラーが発生するか、ファイルの最後に達した場合は NULL を返す。 エラーの場合、 errno が適切に設定される。
エラー
EBADF | ディレクトリストリームディスクリプタ dir が無効。 |
準拠
SVr4, 4.3BSD, POSIX.1-2001
関連項目
read(2), closedir(3), dirfd(3), ftw(3), opendir(3), rewinddir(3), scandir(3), seekdir(3), telldir(3)