getdents() - Unix、Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考資料
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於 TP  

getdents() - Unix、Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

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);

描述

這不是您感興趣的函式。請檢視readdir(3) 以瞭解符合 POSIX 標準的 C 庫介面。此頁面記錄的是核心系統呼叫的基本介面。

系統呼叫getdents() 從fd指向的目錄讀取多個dirent結構到dirp指向的記憶體區域。引數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是空終止的檔名。

此呼叫取代了readdir(2)。

返回值

成功時,返回讀取的位元組數。目錄結束時,返回0。出錯時,返回-1,並適當地設定errno

錯誤

標籤描述
EBADF 無效的檔案描述符fd
EFAULT 引數指向呼叫程序的地址空間之外。
EINVAL 結果緩衝區太小。
ENOENT 沒有這樣的目錄。
ENOTDIR
 檔案描述符不是指向目錄。

符合標準

SVr4。

備註

Glibc 沒有為此係統呼叫提供包裝器;請使用syscall(2) 呼叫它。

參見



previous next Printer Friendly

廣告


  

廣告



廣告