名前


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)

openSUSE Logo

コンテンツ