Linux下struct dirent,DIR,struct stat使用例子

以下例子,读取遍历目录中的文件夹,文件,并输出一些属性值,具体的相关结构体定义,可以参考:

http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/

http://www.360doc.com/content/11/0110/16/4559801_85509847.shtml

/*
* linux struct dirent,DIR,struct stat
* date: 2015-7-16
* author: zhang
* compiled by gcc
*/

#include <stdio.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>

int main(int argc,char **argv)
{
	struct dirent *dirp;
	struct stat buffer;
	DIR *dp; //结构体,具体参阅http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/

	if (argc != 2)
	{
		printf("argument is error!\n");
		return 0;
	}

	if ((dp = opendir(argv[1])) == NULL)
	{
		printf("file path is error!\n");
		return 0;
	}

	while(dirp = readdir(dp))
	{
		printf("filename: %s\n",dirp->d_name);//文件名
		stat(dirp->d_name,&buffer);
	//	printf("%d\n",stat(dirp->d_name,&buffer));
		printf("st_mode: %d\n",buffer.st_mode); //文件访问权限
		printf("st_uid: %d\n",buffer.st_uid);   //所有者用户识别号
		printf("st_mtime: %d\n",buffer.st_mtime);//最后一次修改该文件的时间
		printf("\n");

	}

	closedir(dp);

	return 0;
}

参考文献:

http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/

http://www.360doc.com/content/11/0110/16/4559801_85509847.shtml

http://www.cplusplus.com/forum/unices/16005/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 18:36:52

Linux下struct dirent,DIR,struct stat使用例子的相关文章

struct dirent/DIR

#include <dirent.h> 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 char d_type;//the type of d_name 文件类型 char d_name[NAME_MAX+1];//文件名,最长256字

linux下实现rm()函数删除文件或目录

在linux下有两个函数可以用来删除文件: #include <unistd.h> int unlink(const char *pathname); unlink函数删除文件系统中的一个名字,如果这个名字是该文件的最后一个link并且该文件没有被任何进程打开,那么删除该文件.否则等到文件被关闭或最后一个link被删除后删除该文件并释放空间. #include <unistd.h> int rmdir(const char *pathname); 只有当目录为空的时候,rmdir才

linux下实现简易pwd命令

/*     pwd 命令     路径名通过栈存储,先入栈存储,再出栈输出 */ #include <stdio.h> #include <string.h> #include <unistd.h> #include <dirent.h> #include <string.h> #include <stdlib.h> #define NUM 40 /*     定义节点 */ struct node {     char name[

linux下遍历文件夹---opendir等用法

首先要说肯定是头文件,#include <sys/types.h>   #include <dirent.h> linux下遍历文件夹需要用到以下几个函数,其中有三个是必须的,其它几个是可选的. DIR* opendir(const char * name);   失败返回NULL.成功返回DIR结构体.注意DIR前面没有struct,如果加上编译器会warning struct dirent *readdir(struct DIR* dir);   失败返回NULL. void

linux下实现ls()函数遍历目录

需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有: #include <dirent.h> DIR* opendir(const char* dir_path); struct dirent* readdir(DIR* dirp); int closedir(DIR* dirp); int lstat(const chat* filename,struct stat* st); 在这里涉及到几个结构体:DIR,struct dirent,struct st

Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)

Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /************************************************************************* > File Name: printf.c > Author: > Mail: > Created Time: Wed 11 Feb 2015 01:08:15 AM PST ***********************

归纳整理Linux下C语言常用的库函数----文件操作

在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. 字符串转换 3. 字符测试 4. 文件操作 5. 时间日期 6. 常用数学函数 7. 文件内容操作 8. 文件权限控制 9. 进程操作 10. 线程操作 11. Socket操作 12. 信号处理 13. 数据结构及算法 这次主要总结的是上面黑色部分,关于文件操作的函数. 系统调用归类 * * 函数

linux下实现简易ll命令

/*     实现ll命令,输出指定目录下详细信息     格式:ll -l dirname     目录采用快速排序,按字典顺序排序 */ #include <stdio.h> #include <dirent.h> #include <stdlib.h> #include <sys/stat.h> #include <string.h> #include <time.h> #include <grp.h> #inclu

Linux下的C程序,遍历文件夹并统计其中各个类型文件所占百分比

递归遍历一个目录下的所有文件和文件夹,统计各个类型文件所占的百分比 程序代码a.cpp(编译命令:g++ a.cpp -o a) #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <dirent.h> #include <string.h> stru