readdir - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
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