合肥工业大学操作系统课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.设计题目

第31题:操作系统接口:兼容Unix/Linux命令接口。

要求:

1)为Windows操作系统建立一个兼容Unix命令的命令接口;

2)实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more,print,命令的内容与详细格式请查阅unix命令手册;

3)设计命令的名称、参数等格式。

4)可以字符形式接收命令,执行命令,然后显示命令执行结果;

二.设计原理及算法描述

UNIX命令:

ls [选项]

列出文件信息(默认为当前目录)

ls无参显示一个目录中的文件和子目录

ls -l每行仅显示一个目录或名称

ls --help 显示此帮助信息并离开

mkdir目录

若目录不存在则创建目录

mkdir --help显示此帮助信息并离开

rmdir目录

若目录没有数据则删除目录

rmdir --help显示此帮助信息并离开

cp来源文件目的文件

将来源文件复制到目的文件

cp --help显示此帮助信息并离开

cat文件

或:cat 文件1 >> 文件2

显示文件内容或连接两个文件,并将结果输出到显示屏上

cat文件将文件的内容输出到显示屏上

cat 文件1 >> 文件2将文件1连接到文件2的结尾,并输出到显示屏上

cat --help 显示此帮助信息并离开

more文件

使文件能逐行(回车键)或逐页(空格键)显示并显示当前文件所占总文件的百分比

more --help显示此帮助信息并离开

mv文件1 文件2

或:mv 文件目录重命名或移动文件

mv 文件1 文件2将文件1名字改为文件2的名字

mv 文件目录将指定文件移动到指定目录下

mv --help显示此帮助信息并离开

sort文件

将文本文件内容加以排序

sort --help显示此帮助信息并离开

按照每个命令的功能编写一个实现函数。通过c++字符串操作从输入流获得指令以及参数,通过对指令以及参数的判别调用对应指令的函数,实现对windows内文件的各项操作。

三.开发环境

硬件环境:

个人PC机

软件环境:

Microsoft Windows XP

Microsoft Visual C++ 6.0

四.重要算法和设计思路描述

命令以及参数的获取:由于命令加参数最多能有四部分,所以申请4个字符串数组。并且将首地址都初始化为NULL,在后面的函数中用作判断输入参数的个数。根据输入流中的空格来分割命令和参数以及参数和参数。每检测到一个空格,即将前面的输入字符加上字符串结束符一起存入申请到的字符串数组中。

命令以及参数的判断:strcmp。

参数个数的判断:观察后三个字符串数组首地址是否为NULL。

利用以下一些API函数实现unix命令要求实现的功能,对windows 里的文件进行操作。

BOOL WINAPI SetCurrentDirectory( __in LPCTSTR lpPathName); 切换当前进程的当前工作目录。

HANDLE FindFirstFile( LPCTSTR lpFileName, // file name LPWIN32_FIND_DATA lpFindFileData // data buffer ); 该函数到一个文件夹(包括子文件夹)去搜索指定文件如果要使用附加属性去搜索文件的话可以使用FindFirstFileEx函数

DWORD GetCurrentDirectory(

DWORD nBufferLength, // size of directory buffer

LPTSTR lpBuffer // directory buffer

); 获取当前进程的当前目录

BOOL CreateDirectory(LPCTSTR lpPathName,

LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 创建一个新目录HANDLE CreateFile(

LPCTSTR lpFileName, //指向文件名的指针

DWORD dwDesiredAccess, //访问模式(写/读)

DWORD dwShareMode, //共享模式

LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针

DWORD dwCreationDisposition, //如何创建

DWORD dwFlagsAndAttributes, //文件属性

HANDLE hTemplateFile //用于复制文件句柄

); 这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台缓冲区

五.程序实现——数据结构

doc.h中用#define 宏定义了各命令的帮助文档。

function.h中用API函数和一些简单的字符串操作实现了每个命令要求的功能。

cmd.cpp中定义了获取命令及参数的方法,用if…else…结构对命令及参数进行判断并调用对应的函数。

六.程序实现——程序清单

见程序包

七.课程设计总结

经过一个星期的课程设计,经历的困难一语难尽。整个课程设计期间我们失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我们回味无长。

生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今浮躁的生活中,很少有机会能静下心来做一个设计,但我们可以,一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契。

在一次次的试验中,我们收获的不仅是程序设计的技能更加是耐心和经验,还有做课程设计的心态。一行代码的错误直接影响着最后的结果,这就让我们每一个语句都编写的仔细。最让人苦恼的是完全按设计原理的编程,执行结果却依然不对,这时候,我们需要分析错误的原因,逐步排查。

最终验收成功的时候我们由衷的高兴。当然,这与老师的指导和示范十分不开的,正是有了老师耐心的指导和对于错误原因分析的帮助,才有了我们的对操作系统的接口的新认识。

对我而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆!

再次感谢老师的教学与指导,老师您辛苦了。

相关文档
最新文档