Unix-system-calls-getdents

提供:Dev Guides
移動先:案内検索

[top]#

[[File:]]

[[File:]]

|Web |This Site

  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

  Home     References     Discussion Forums     About TP  

getdents()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

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_はiノード番号です。 _d_off_は、ディレクトリの先頭から次の_dirent_の先頭までの距離です。 _d_reclen_は、_dirent_全体のサイズです。 _d_name_は、ヌルで終わるファイル名です。

この呼び出しは readdir (2)に優先します。

返り値

成功すると、読み込んだバイト数が返されます。 ディレクトリの最後に0が返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag

説明

*EBADF*

無効なファイル記述子_fd_。

*EFAULT*

引数が呼び出しプロセスのアドレス空間の外側を指している。

*EINVAL*

結果バッファが小さすぎます。

*ENOENT*

そのようなディレクトリはありません。

*ENOTDIR*

ファイル記述子はディレクトリを参照していません。

準拠

SVr4。

ノート

Glibcはこのシステムコールのラッパーを提供しません。 syscall (2)を使用して呼び出します。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

  
Advertisements