HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > g > getdents - システムコールの説明

getdents - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 関連項目

名前

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

書式

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

_syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count) /* Using syscall(2) may be preferable; see intro(2) */
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.

関連項目

Linux Tips 関連記事
Linux Tips(目次)
Linux ディストリビューション一覧
rpm のファイル名にあるi386とかi686とは
自分のマシンの情報を調べる
cron の設定
ssh の root ログインを禁止する
ssh を、ユーザ、IPでアクセス制限
鍵交換方式によるssh接続
鍵交換方式によるssh接続( windowsから )
複数ファイル内の文字列を置換して上書き保存する
あるグループをイニシャルグループとするユーザー一覧出力
複数ファイルのファイル名を一括変換する
連番ファイルをコマンド一発で作成する
中身がランダムなファイルを任意のサイズで作成する
Linux ユーザーアカウントをロック・アンロックする