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

广告


  

广告



广告