linux编程学习1-列举一个目录下的文件
2015-05-31 02:26
621 查看
一、结构体
struct dirent {
long d_ino;//inode number 索引节点号
off_t d_off;//offset to this dirent 在目录文件中的偏移
unsigned short d_reclen;//length of this d_name 文件名长
unsigned cha d_type;//the type of d_name 文件类型
char d_name[NAME_MAX + 1];//filename 文件名,最长256个字符
};
说明:
d_type可能是以下值中的其中一个:
DT_BLK:this is a block device,这是一个块设备
DT_CHR:this is a character device,这是一个字符设备
DT_DIR:this is a directory,这是一个文件夹
DT_FIFO:this is a named pipe,这是一个命名管道
DT_LNK:this is a symbolic link,这是一个符号文件
DT_REG:this is a regular file,这是一个规则文件
DT_SOCK:this is a Unix sock,这是一个Unix域套接字
DT_UNKNOWN:this file type is unknown,这个文件类型未知
二、函数
DIR *opendir(const char *name);
1.头文件
#include <dirent.h>
2.描述
opendir函数根据目录路径name打开一个目录流,并返回这个目录流指针,这个目录流指向目录name的第一个条目(entry)
3.返回值
如果成功,返回目录流指针DIR*,否则,返回NULL
4.注意
如果成功打开,不用这个目录流指针的时候,需要调用int closedir(DIR *dirp)函数释放这个目录流指针
struct dirent *readdir(DIR *dirp);
1.头文件
#include <dirent.h>
2.描述
readdir函数
3.返回值
如果成功,返回dirent*,否则返回NULL
int closedir(DIR *dirp);
1.头文件
#include <dirent.h>
2.描述
closedir函数释放一个打开的目录流
3.返回值
如果成功,返回0,否则返回-1
三、源码实现
struct dirent {
long d_ino;//inode number 索引节点号
off_t d_off;//offset to this dirent 在目录文件中的偏移
unsigned short d_reclen;//length of this d_name 文件名长
unsigned cha d_type;//the type of d_name 文件类型
char d_name[NAME_MAX + 1];//filename 文件名,最长256个字符
};
说明:
d_type可能是以下值中的其中一个:
DT_BLK:this is a block device,这是一个块设备
DT_CHR:this is a character device,这是一个字符设备
DT_DIR:this is a directory,这是一个文件夹
DT_FIFO:this is a named pipe,这是一个命名管道
DT_LNK:this is a symbolic link,这是一个符号文件
DT_REG:this is a regular file,这是一个规则文件
DT_SOCK:this is a Unix sock,这是一个Unix域套接字
DT_UNKNOWN:this file type is unknown,这个文件类型未知
二、函数
DIR *opendir(const char *name);
1.头文件
#include <dirent.h>
2.描述
opendir函数根据目录路径name打开一个目录流,并返回这个目录流指针,这个目录流指向目录name的第一个条目(entry)
3.返回值
如果成功,返回目录流指针DIR*,否则,返回NULL
4.注意
如果成功打开,不用这个目录流指针的时候,需要调用int closedir(DIR *dirp)函数释放这个目录流指针
struct dirent *readdir(DIR *dirp);
1.头文件
#include <dirent.h>
2.描述
readdir函数
3.返回值
如果成功,返回dirent*,否则返回NULL
int closedir(DIR *dirp);
1.头文件
#include <dirent.h>
2.描述
closedir函数释放一个打开的目录流
3.返回值
如果成功,返回0,否则返回-1
三、源码实现
#include <dirent.h> #include <stdio.h> int list_dir(char *filename) { DIR *dirp; if ((dirp = opendir(filename)) == NULL) { printf("cann't open %s\n", filename); return -1; } dirent *direntp; while ((direntp = readdir(dirp)) != NULL) printf("type:%d, name:%s\n", direntp->d_type, direntp->d_name); closedir(dirp); return 0; } int main(int argc, char *argv[]) { if (argc != 2) { printf("input param error!!"); return -1; } return list_dir(argv[1]); }
相关文章推荐
- 嵌入式软件开发培训笔记——linux标准I/O库
- Linux之内核中的文件系统
- 返璞归真的Linux BFS调度器
- linux screen 命令详解
- Linux多线程编程的条件变量
- Linux多线程编程的条件变量
- Linux之文件系统
- Linux常用命令(更新中)
- ctrl+c,ctrl+d,ctrl+z在linux中意义
- ctrl+c,ctrl+d,ctrl+z在linux中意义
- ffmpeg将amr转成mp3(window和linux环境)
- linux c++ 服务器端开发面试必看书籍
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- VMware下linux桥接模式联网配置和mysql的安装
- 嵌入式软件开发培训笔记——嵌入式linux内核与文件系统移植与分析
- windows下netbeans连接虚拟机里的linux系统
- Linux下的Libsvm使用历程录
- linux启用ftp服务
- STM32硬件开发还是linux开发
- 关于Linux(Ubuntu)安装使用pyinsta…