readdir

Autres langues

Langue: ja

Autres versions - même langue

Version: 1996-04-22 (fedora - 25/11/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

名前

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)