没有合适的资源?快使用搜索试试~ 我知道了~
文件系统扩展实验1
需积分: 0 9 下载量 130 浏览量
2022-08-03
11:16:00
上传
评论
收藏 590KB PDF 举报
温馨提示
试读
11页
1. 实验名称:文件系统扩展实验 2. 实验要求:对【程序 5_9】进行扩展,要求参数为目录名,且其下 3. 实验目的: 4. 实验内容:(为完成实验,如何进行
资源详情
资源评论
资源推荐
操作系统实验
文件系统扩展实验
姓名:
李毓琪
学号:
2220191195
专业班级:
网络工程 2019-2
选课序号:
4
1. 实验名称:文件系统扩展实验
2. 实验要求:对【程序 5_9】进行扩展,要求参数为目录名,且其下
至少有三层目录,分别用深度遍历及广度遍历两种方法对此目录
进行遍历,输出此目录下所有文件的大小及修改时间。
3. 实验目的:
(1) 掌握通过 stat 系统调用从程序中访问和显示文件元数据的方
法。
(2) 掌握通过 readdir 系统调用读取目录文件信息的方法。
(3) 掌握 Open,Close 等对文件夹的基本操作
(4) 掌握 Linux 的目录结构。
(5) 掌握广度遍历以及深度遍历算法。
(6) 掌握 C 语言字符串操作。
4. 实验内容:( 为 完 成 实 验 , 如 何 进 行 程 序 设 计 )
深度遍历目录:可使用堆栈或者递归对目标目录进行遍历,遍历文
件时通过 get_file_size_time 函数判断该文件类型,如果为普通文件时,
通过 dirp 指针获取文件名以及文件的最后修改时间;当遍历到文件
夹时,将其文件夹名放入堆栈或者暂存起来,等到当前目录遍历完,
在从堆栈中取出文件夹名对其进行遍历或者再对获取到的文件夹进
行递归操作进行遍历。
广度遍历目录:与深度遍历目录类似。使用队列来存储遍历到的文
件名,当遍历到文件夹时,将其文件夹名放入队列中。当当前目录遍
历结束之后,从队列中取出一个文件夹,在对其进行遍历,以此实现
广度遍历目录。在 Linux 操作系统中,可以使用系统自带的消息队列
机制即 sys/msg.h 库,省去创建队列以及对其操作的函数编写。
5. 程序:( 较 之 已 有 程 序 有 修 改 的 、 新 增 的 程 序 段 加 下 划 线 )
深度遍历:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
static int get_file_size_time(const char *filename)
{
struct stat statbuf;
if(stat(filename,&statbuf)==-1) //取 filename 的状态
{
printf("Get stat on %s Error:%s\n",filename,strerror(errno));
return(-1);
剩余10页未读,继续阅读
华亿
- 粉丝: 41
- 资源: 308
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0