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, 参照, 注意, インターフェース, 終端

Linux マニュアル 一覧

[man1] [man2] [man3] [man4] [man5] [man6] [man7] [man8]
[a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] [l] [m] [n] [o] [p] [q] [r] [s] [t] [u] [v] [w] [x] [y] [z]

 

Index

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

This document was created by man2html, using the manual pages.
Time: 12:08:47 GMT, June 11, 2022