READDIR

Section: Linux Programmer's Manual (2)
Updated: 2019-03-06
Index JM Home 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_reclend_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/ に書かれている。


関連キーワード

dirent, old, readdir, READDIR, ディレクトリ, unsigned, 参照, 注意, インターフェース, 終端 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 03:54:17 GMT, May 19, 2022