操作系统原理实验指导书(4)

2019-06-11 00:58

《操作系统实验》指导书

当前目录中的email子目录内,文件名为mail(同名复制);此时若email目录内已经存在名字为mail的文件或目录,则出现重名错误;

(3) 若当前目录内存在email文件,则出现重名错误(并不询问是否覆盖);

(4) 若当前目录内不存在源文件mail(或者虽然有mail,但它是子目录名),则也报错。 【注】

? 在同一目录中,各目录项不能重名(不管是文件名还是子目录名) ? 上述(2)(3)是为了简化程序设计,真实系统一般与这种处理方式有区别,请参见实习

任务的“完善copy命令”中的叙述。

copy命令的处理函数为CopyComd(),其简单流程图如图14所示。

开始 命令格式正确吗? 是 源文件存在吗? 否 否 显示“命令中参数太多或太少” 显示“源文件不存在。” 显示“文件正在使用不能复制。” 是 源文件已打开? 否 是 文件复制到当前目录,同名复制 是 命令只有1个参数? 否 目标路径正确吗? 是 目标文件名正确? 是 目标文件名冲突? 否 目标文件与 子目录同名? 是 否 显示“目标文件名错误。” 否 显示“路径名错误。” 显示“目标文件重名错误。” 源文件更名复制到目标目录中 否 是 源文件同名复制到该子目录中 子目录有源文件同名文件? 是 否 为目标文件建立目录项,分配磁盘空间,复制源文件内容到新分配的磁盘空间。 返回 图14 copy命令程序流程图

13

《操作系统实验》指导书

13. ren命令流程图

命令形式:ren <原文件名> <新文件名>。功能:文件改名,即将指定文件的名字改为“新文件名”。若原文件不存在,给出错误信息。若原文件存在,但正在使用,也不能改名,同样显示出错信息。应检查新文件名是否符合命名规则以及新文件名是否有重名冲突。 ren命令的处理函数为RenComd(),其简单流程图如图15所示。

开始 命令格式正确吗? 是 改名文件存在吗? 否 否 显示“命令中参数太多或太少” 显示“要改名的文件不存在。” 显示“文件正在使用不能改名。” 显示“新文件名不合规则。” 显示“存在文件新文件重名。” 是 文件已打开了吗? 否 是 新文件名合法吗? 是 新文件名重名吗? 否 否 是 在该文件的目录项中用新名字代替原名字 返回 图15 ren命令程序流程图

14. attrib命令流程图

命令形式:attrib <文件名> [±<文件属性>]。功能:显示、修改文件或目录属性。若命令中无“文件属性”参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。“文件属性”的形式有“+r或+h或+s”和“-r或-h或-s”两种形式,前者为设置指定文件为“只读”或“隐藏”或“系统”属性,后者为去掉指定文件的“只读”或“隐藏”或“系统”属性。各属性可组合使用且顺序不限。例如: attrib user/boy +r +h

上述命令的功能是设置当前目录下user子目录中的文件boy为只读、隐藏文件。又如 attrib /usr/user/box -h -r -s

上述命令的功能是取消根目录下usr子目录中user子目录中的box文件的“隐藏”、“只读”、“系统”属性。

当命令中指定的文件已打开或不存在,不能修改其属性,给出错误信息;当命令中提供的参数错误,也显示出错信息。

【注】本程序没有考虑属性的相关性和制约性。例如,DOS操作系统中,设置一个文件的“系统”属性时,必须先将该文件的属性设置成“只读”和“隐藏”后,才能设置它为“系统属性”,即设置属性有次序问题。本系统不受这些限制。

attrib命令的处理函数为AttribComd(),其简单流程图如图16所示。

14

《操作系统实验》指导书

开始 命令格式正确吗? 是 文件/目录存在吗? 否 否 显示“命令中参数太多或太少” 显示“文件或目录不存在。” 显示指定文件或目录的属性。 是 是 命令没有属性吗? 否 否 命令指定的是文件? 是 该文件打开了吗? 否 所给属性正确吗? 是 否 显示“命令中的属性参数错误。” 是 显示“文件正在使用,不能修改属性。” 按命令的属性给指定文件或目录设置属性 返回 图16 attrib命令程序流程图

15. undel命令程序流程图

命令形式:undel [<目录名>]。功能:恢复指定目录中被删除的文件。

指定目录不存在,报错;命令中不指定目录,则对当前目录进行操作。若目录中无删除的文件,则显示“无文件可恢复”;若目录中有被删除的文件,逐个显示并询问用户,得到肯定回答后则开始恢复之,恢复过程中若发现该文件原先占用的盘块已作它用,则显示“不能恢复”信息;若发现恢复文件与现有文件重名,则请求用户输入一个新名字(也要检查是否发生重名冲突)。恢复成功与失败的文件在udtab中对应的表项都将被删除。 【说明】udtab的表项是在删除文件时填写的。

undel命令的处理函数为UndelComd(),其简单流程图如图17所示。 16. FindPath( )函数程序流程图

函数原型:int FindPath(char *pp,char attrib,int ffcb,FCB* &fcbp);

功能:查找给定的路径(由参数pp指定),确定路径的正确性,并返回路径中最后一个名字(目录名)代表的目录的地址(首块号);对路径进行处理(去掉路径中的“..”),构成一个全路径名存于全局变量temppath中;当函数参数ffcb非零时,通过调用FindFCB( )函数,使得本函数成功返回时,FCB类引用参数fcbp带回指向路径最后一个目录的目录项的地址。其程序流程图如图18所示。 17. FindFCB( )函数程序流程图

函数原型:int FindFCB(char *Name,int s,char attrib,FCB* &fcbp);

功能:从函数参数s指定的块开始,查找参数Name指定的名字(目录或文件名)且符合属性attrib的目录项。若找到,返回其首块号(非负整数——Name是目录名时,返回正整数;Name是文件名时,返回非负整数:非空文件,返回正整数,空文件,返回0);若没有找到,

15

《操作系统实验》指导书

返回负数-1。函数正确返回时,引用参数fcbp带回该目录项的地址。 FindFCB()函数的程序流程图如图19所示。

开始 命令格式正确吗? 是 是 命令无参数吗? 否 显示“命令中参数太多” 处理当前目录中文件恢复问题。 否 指定目录存在吗? 是 处理指定目录中文件恢复问题。 否 显示“命令中指定路径错误。” 在要处理的目录中查找被删除的目录项,找到后询问用户是否恢复,得到肯定回答后恢复它。恢复过程中若发现该文件原先占用盘块已作它用,则显示“不能恢复”字样;若恢复文件存在重名冲突,则请求用户输入一个文件名,系统检查无重名冲突后,即执行恢复工作。然后处理下一个被删除文件,直到全部处理完毕为止。 显示恢复文件个数。 返回 图17 undel命令程序流程图

开始 pp=\? 说明:进入函数时pp指向路径名字符串 是 Temppath=\返回首块号s=1 s=curpath.fblock temppath←curpath.cpath s=1 pp++ 否 是 *pp=\? 否 将pp所指路经的各项分离出来(去掉\,存于paths[j](j=0,...,n)中。 逐个处理paths[j],将它们加到Temppath中,遇到某个paths[j]=\,则去掉临时路经Temppath中最后一个名字。对每一个paths[j],调用FindFCB()函数,以确定其存在性,若存在,返回其首块号s 最终,s=Temppath中最后一个名字的首块号 返回 图18 FindPath()函数流程图

16

《操作系统实验》指导书

开始 说明:进入函数时Name指向需查找的名字, s=该名字所在子目录的首块号 否 s > 0? 是 取下一个块号 s=FAT[s] 否 在块s中查找名字为Name,属性为attrib的目录项 返回-1 找到了吗? 是 属性符合吗? 否 返回-1 是 返回该目录项的首块号s,并由引用参数带回指向该目录项的指针值(地址)。 结束 图19 FindFCB( )函数流程图

开始 说明:进入函数时path指向需处理的路经名 将path中最后一个名字保存到Name中 path中去掉Name后,余下部分仍存于path 是 s=curpath.fblock temppath←curpath.cpath s=1(是根目录) temppath←\path是空串? 否 是 path=\? 否 调用函数:s=FindPath(path , ...) 是 显示“路径名错误” s=-1 s < 0? 返回 s 结束 图20 ProcessPath( )函数流程图

18. ProcessPath( )函数程序流程图

函数原型:int ProcessPath(char* path,char* &Name,int k,int n,char attrib); 功能:将参数path中最后一个名字(文件名或目录名)分离出来,并由引用参数Name带回;返回path中除掉Name后,最后一个目录的地址(首块号);必要时调用函数FindPath(),并通过全局变量temppath带回path(去掉Name后)的全路径名(绝对路径名)。 ProcessPath()函数的程序流程图如图20所示。

17


操作系统原理实验指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:健康素养测试题(一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: