C语言学习
文件系统:
1.inode
本质是结构体,
存储文件属性信息:
1.权限
2.类型
3.大小
4.时间
5.用户
6.盘块位置
2.dentry
stat函数:
int stat(const char *path,struct stat *buf)
参数:
path:文件路径
buf:(穿书参数)存放文件的路径
返回值:
成功:0
失败:-1 errno
通过stat函数获取文件大小和时间
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/stat.h> 5 int main(int argc,char *argv[]){ 6 struct stat sbuf; 7 int ret=stat(argv[1],&sbuf); 8 if(ret==-1){ 9 perror("stat error"); 10 exit(1); 11 12 } 13 printf("file size:%ld\n",sbuf.st_atime); 14 printf("file size:%ld\n",sbuf.st_size); 15 return 0; 16 }
通过stat函数获取文件类型,遍历目录,下面这个例子,在man配置里面有举例
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<unistd.h> 5 #include<pthread.h> 6 #include<dirent.h> 7 int main (int argc, char *argv[]) { 8 9 DIR *dp; 10 struct dirent *sdp; 11 if (argc < 2) { 12 printf("usage error!"); 13 exit (1); 14 } 15 dp = opendir (argv[1]); 16 if (dp == NULL) { 17 18 perror ("opendir error"); 19 exit (1); 20 } 21 while ((sdp = readdir (dp)) != NULL) { 22 if ((strcmp (sdp->d_name, ".") == 0) || (strcmp (sdp->d_name, "..") == 0)) { 23 continue; 24 } 25 printf("%s\t", sdp->d_name); 26 } 27 printf("\n"); 28 closedir (dp); 29 30 return 0; 31 }
目录操作函数:
opendir()
closedir()
readdir()
递归遍历目录:ls -R .c
1.判断命令行参数,获取用户要查询的目录名. argv[1]
argc==1 ---> ./
2.判断用户指定的是否是目录. stat S_IDDIR()---->封装函数isFile
3.读目录
opendir(dir)
while(readdir()){
普通文件,直接打印
目录:拼接目录访问绝对路径.sprintf (path,""%s%s"",dir,d_name)
递归调用自己.--->opendir readdir closedir
}
closedir()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现