《操作系统》课程实验报告-实现一个文件查找程序_第1页
《操作系统》课程实验报告-实现一个文件查找程序_第2页
《操作系统》课程实验报告-实现一个文件查找程序_第3页
《操作系统》课程实验报告-实现一个文件查找程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《操作系统》课程实验报告实验题目:实现一个文件查找程序实验概述【实验目的及要求】仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件。其命令格式如下:myfindPATH-option参数[-print][-exec命令{}\;]PATH:查找的起始目录。-option参数:用来控制搜索方式,具体如下(以下只给我常用的):

-name"文件":指定要查找的文件名,可以有通配符?*等。

-prune目录:指出搜索时不搜索该目录。

-mtime+n或-n:按时间搜索,+n:表示n天之前修改过的文件;-n:表示今天到n天前之间修改过的文件。

-ctime+n或-n:也是按时间查找,+n:表示n天之前创建的文件;-n:表示今天到n天前之间创建的文件。

-print:将搜索结果输出到标准输出。可选的实验1:实现-exe选项。

-exec:对查找到的每一个结果实行指定的程序。格式如下:

-exec程序名提示:执行指定的程序可以创建一个进程执行【实验环境】操作系统:Linuxmint编译环境:gcc实验内容【实验过程】一、实验远原理(1)文件系统可以抽象为一棵数,给点的搜索的文件路径作为树的根节点,按照先根遍历的方式,递归遍历并匹配,结果保存在数组中。(2)伪代码:voidfindFunc(intargc,char*argv[],char*path){//打开目录流dir=opendir(path);//读取路径下的所有文件和路径while(dir_struct=readdir(dir)!=NULL){//拼接目录和文件名filepath=getPath(path,dir_struct->d_name);//获取文件属性stat_buf=lstat(filepath,&stat_buf);//根据条件过滤matchCondition(stat_buf,condition);//如果是目录,递归查询if(S_SDIR(stat_buf.st_mode))findFunc(argc,argv,path);}}(3)参考资料:(3.1)目录的逻辑结构structdirent*dir_struct;//保存读取目录的结果Dir*dir//目录流structstatstat_buf;//用来存储文件属性的结构体(3.2)参考函数regcomp()//检验正则表达式是否合法regexec()//检测字符串是否与正则表达式匹配opendir()//打开目录流readdir()//读取目录下当前文件lstat()//获取文件属性二.实验结果与分析小结:(1)文件系统可以抽象为一棵数,给点的搜索的文件路径作为树的根节点,按照先根遍历的方式,递归遍历即可了解该路径下的文件的结构(2)目录文件包含了其他文件的名字以及指向与这些文件有关的信息的指针,而结构体dirrent就是描述这种结构的C语言表示(3)结构体stat描述了文件的详细属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论