READDIR
Section: Linux Programmer's Manual (2)
Updated: 2019-03-06
Index
JM Home Page
roff page
名前
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 引数は無視される。最大で 1 個の
old_linux_dirent 構造体が読み出される。
old_linux_dirent 構造体は (Linux カーネルのファイル fs/readdir.c で内部用として)
以下のように宣言される:
struct old_linux_dirent {
unsigned long d_ino; /* inode 番号 */
unsigned long d_offset; /* この old_linux_dirent へのオフセット */
unsigned short d_namlen; /* この d_name の長さ */
char d_name[1]; /* (NULL 終端された) ファイル名 */
}
d_ino は inode 番号である。 d_offset はディレクトリの最初からこの 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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 03:33:33 GMT, December 05, 2022