GETDENTS

Section: Linux Programmer's Manual (2)
Updated: 2007-06-01
Index JM Home Page roff page
 

名前

getdents - ディレクトリ・エントリを取得する  

書式

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

int getdents(unsigned int fd, struct dirent *dirp, unsigned int count);
 

説明

これはあなたが興味を持つような関数ではない。 POSIX 準拠の C ライブラリインターフェースについては readdir(3) を見ること。 このページは裸のカーネルシステムコールインターフェースを記している。

getdents() は fd で指定したディレクトリから dirp が指しているメモリ領域にいくつかの dirent 構造体を読み込む。 count パラメーターは メモリ領域のサイズである。

dirent 構造体は以下のように宣言されている:

struct dirent {
    long d_ino;                 /* inode number */
    off_t d_off;                /* offset to next dirent */
    unsigned short d_reclen;    /* length of this dirent */
    char d_name [NAME_MAX+1];   /* filename (null-terminated) */
}

d_ino は inode 番号である。 d_off はディレクトリの先頭から次の dirent の先頭までの距離である。 d_reclen はこの dirent 全体のサイズである。 d_name はヌル(null)文字で終わるファイル名である。

このコールは readdir(2) に取って代わる。  

返り値

成功した場合は、読み込んだバイト数が返される。 ディレクトリの終わりならば 0 が返される。 エラーの場合は -1 を返され、 errno に適切な値が設定される。  

エラー

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

準拠

SVr4.  

注意

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

関連項目

readdir(2), readdir(3)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:42 GMT, November 19, 2007