READDIR(2) | Linux Programmer's Manual | READDIR(2) |
名前
readdir -ディレクトリ・エントリを読み込む書式
int readdir(unsigned int fd , struct old_linux_dirent * dirp ,
unsigned int count );
説明
これはあなたの興味をもっている関数ではない。 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 の大きさで、終端のヌルバイト (null byte) を含まない。 d_name はヌルバイトで終わるファイル名である。
返り値
成功した場合は、1 が返される。ディレクトリの最後では 0 が返される。エラーの場合は-1 が返され、 errno が適切に設定される。エラー
- EBADF
- ファイルディスクリプタ fd が不正である。
- EFAULT
- 引き数が呼び出したプロセスのアドレス空間外を指している。
- EINVAL
- 結果用のバッファーが小さすぎる。
- ENOENT
- そのようなディレクトリは存在しない。
- ENOTDIR
- ファイルディスクリプタがディレクトリを参照していない。
準拠
このシステム・コールは Linux 特有である。注意
glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って呼び出すこと。 old_linux_dirent 構造体を自分自身で定義する必要がある。しかし、たいていはこのシステムコールではなく readdir(3) を使うべき場面のことが多い。関連項目
getdents(2), readdir(3)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2013-03-26 | Linux |