Linux repositories inspector
Linux
2013-06-21

manpages-ja-dev

Japanese version of the manual pages (for developers)

man-pages-ja

Japanese man (manual) pages from the Japanese Manual Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

名前

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_reclend_name の大きさで、終端のヌルバイト (\(aq\0\(aq) を含まない。 d_name はヌルバイトで終わるファイル名である。

返り値

成功した場合は、1 が返される。 ディレクトリの最後では 0 が返される。 エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

EBADF ファイルディスクリプター fd が不正である。
EFAULT 引き数が呼び出したプロセスのアドレス空間外を指している。
EINVAL 結果用のバッファーが小さすぎる。
ENOENT そのようなディレクトリは存在しない。
ENOTDIR
ファイルディスクリプターがディレクトリを参照していない。

準拠

このシステムコールは Linux 特有である。

注意

glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って呼び出すこと。 old_linux_dirent 構造体を自分自身で定義する必要がある。しかし、たいていはこのシステムコールではなく readdir(3) を使うべき場面のことが多い。
このシステムコールは x86-64 では存在しない。

関連項目

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
⇧ Top