设为首页 加入收藏

TOP

Linux C函数之文件及目录函数
2014-11-24 03:00:50 来源: 作者: 【 】 浏览:2
Tags:Linux 函数 文件 目录

opendir: 打开目录


头文件: sys/types.h dirent.h


函数定义: DIR *opendir(const char *name);


说明: opendir()用来打开参数name指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接下来对目录的读取和搜索都要使用此返回值. 成功则返回DIR*型态的目录流, 打开失败则返回NULL.


错误代码:


EACCESS 权限不足


EMFILE 已达到进程可同时打开的文件数上限


ENFILE 已达到系统可同时打开的文件数上限


ENOTDIR 参数name非真正的目录


ENOENT 参数name指定的目录不存在, 或是参数name为一空字符串


ENOMEM 核心内存不足


readdir: 读取目录


头文件: sys/types.h dirent.h


定义函数: struct dirent *readdir(DIR *dir);


说明: readdir()返回参数dir目录流的下个目录进入点. 结构dirent定义如下:


struct dirent{


ino_t d_ino;


ff_t d_off;


signed short int d_reclen;


unsigned char d_type;


char d_name[256];


};


d_ino 此目录进入点的inode


d_off 目录文件开头至此目录进入点的位移


d_reclen _name的长度, 不包含NULL字符


d_type d_name所指的文件类型


d_name 文件名


成功则返回下个目录进入点, 有错误发生或读取到目录文件尾则返回NULL. EBADF参数dir为无效的目录流.


应用举例:


#include


#include


#include


#include


int main(void)


{


DIR *dir;


struct dirent *ptr;


int i;


dir = opendir("/etc/rc.d");


while((ptr = readdir(dir)) != NULL)


{


printf("d_name: %s\n", ptr->d_name);


}


return 0;


}


运行结果:


d_name: rc1.d


d_name: rc3.d


d_name: rc


d_name: rc2.d


d_name: rc0.d


d_name: rc.sysinit


d_name: ..


d_name: rc6.d


d_name: rc4.d


d_name: init.d


d_name: rc.local


d_name: rc5.d


d_name: .


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 上简单的MeeGo 开发 QT 程序 下一篇嵌入式Linux的串口通讯C++程序设计

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 C 语言函数中,如 (2025-12-24 12:19:41)
·C盘里面的AppData文 (2025-12-24 12:19:38)
·c语言中的“%d,%s,%c (2025-12-24 12:19:35)
·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)