Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
readdir - ディレクトリエントリーを読み込む
書式
int readdir(unsigned int fd, struct old_linux_dirent *dirp, unsigned int count); 注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
説明
これはあなたの興味をもっている関数ではない。 POSIX 準拠の C ライブラリインターフェースにつ いては readdir(3) を見ること。 このページは裸のカーネルのシステムコールインターフェースに ついて 記述しているが、このインターフェースは getdents(2) によって取って代わられた。 readdir() は、ファイルディスクリプター fd が参照しているディレクトリから old_linux_dirent 構造体を読み込み、 dirp で指されたバッファーに格納する。 count 引き数は(ほとんどの old_linux_dirent 構造体の読み込みにおいて)無視される old_linux_dirent 構造体は以下のように宣言される: struct old_linux_dirent { long d_ino; /* inode number */ off_t d_off; /* offset to this old_linux_dirent */ unsigned short d_reclen; /* length of this d_name */ char d_name[NAME_MAX+1]; /* filename (null-terminated) */ } d_ino は inode 番号である。 d_off はディレクトリの最初からこの old_linux_dirent まで距離で ある。 d_reclen は d_name の大きさで、終端のヌルバイト ('\0') を含まない。 d_name はヌルバ イトで終わるファイル名である。
返り値
成功した場合は、1 が返される。 ディレクトリの最後では 0 が返される。 エラーの場合は -1 が 返され、 errno が適切に設定される。
エラー
EBADF ファイルディスクリプター fd が不正である。 EFAULT 引き数が呼び出したプロセスのアドレス空間外を指している。 EINVAL 結果用のバッファーが小さすぎる。 ENOENT そのようなディレクトリは存在しない。 ENOTDIR ファイルディスクリプターがディレクトリを参照していない。
準拠
このシステムコールは Linux 特有である。
注意
glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って呼び 出すこと。 old_linux_dirent 構造体を自分自身で定義する必要がある。しかし、たいていはこのシ ステムコールではなく readdir(3) を使うべき場面のことが多い。 このシステムコールは x86-64 では存在しない。
関連項目
getdents(2), readdir(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。