名前


readdir - ディレクトリ・エントリを読み込む

書式


#include <linux/types.h> #include <linux/dirent.h>

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_reclend_name の大きさで、 ヌル文字の終端を含んでいない。 d_name はヌル文字で終るファイル名である。

返り値


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

エラー


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

準拠


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

注意


glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って呼び出すこと。

関連項目


getdents(2), readdir(3)

openSUSE Logo

コンテンツ