readdir - システムコールの説明 - Linux コマンド集 一覧表
名前
readdir - ディレクトリ・エントリを読み込む
書式
#include <linux/types.h> #include <linux/dirent.h> #include <linux/unistd.h> #include <errno.h> _syscall3(int, readdir, unsigned int, fd, struct dirent *, dirp," unsigned int, count)" /* Using syscall(2) may be preferable; see intro(2) */ int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);
説明
これはあなたの興味をもっている関数ではない。 POSIX 準拠の C ライブラリ・インターフェースについては readdir (3) を見ること。 このページは裸のカーネル・システム・コール・インターフェースに ついて記述している、これは変更され、 getdents (2) によって置き換られた。
readdir ()は fd が指しているディレクトリから dirent 構造体を読み込み、 dirp で指されたメモリ領域に格納する。 count パラメーターは(ほとんどの dirent 構造体の読み込みにおいて)無視される
dirent 構造体は以下のように宣言される:
struct dirent { long d_ino; /* inode number */ off_t d_off; /* offset to this dirent */ unsigned short d_reclen; /* length of this d_name */ char d_name [NAME_MAX+1]; /* filename (null-terminated) */ }
d_ino は inode 番号である。 d_off はディレクトリの最初からこの dirent まで距離である。 d_reclen は d_name の大きさで、 ヌル文字の終端を含んでいない。 d_name はヌル文字で終るファイル名である。
返り値
成功した場合は、1 が返される。 ディレクトリの最後では 0 が返される。 エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
- EBADF
- ファイル・ディスクリプター fd が不正である。
- EFAULT
- 引き数のポインターが呼び出したプロセスがアクセス可能な空間の 外部を指している。
- EINVAL
- 結果用のバッファーが小さ過ぎる。
- ENOENT
- そのようなディレクトリは存在しない。
- ENOTDIR
- ファイル・ディスクリプターがディレクトリを参照していない。
準拠
このシステム・コールは Linux 特有である。