Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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/ に書かれている。