当前位置:文档之家› 合肥工业大学操作系统课程设计呈报

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

一.设计题目
第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…结构对命令及参数进行判断并调用对应的函数。

六.程序实现——程序清单
见程序包
七.课程设计总结
经过一个星期的课程设计,经历的困难一语难尽。

整个课程设计期间我们失落过,也曾一度热情高涨。

从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我们回味无长。

生活就是这样,汗水预示着结果也见证着收获。

劳动是人类生存生活永恒不变的话题。

通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义。

我想说,设计确实有些辛苦,但苦中也有乐,在如今浮躁的生活中,很少有机会能静下心来做一个设计,但我们可以,一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契。

在一次次的试验中,我们收获的不仅是程序设计的技能更加是耐心和经验,还有做课程设计的心态。

一行代码的错误直接影响着最后的结果,这就让我们每一个语句都编写的仔细。

最让人苦恼的是完全按设计原理的编程,执行结果却依然不对,这时候,我们需要分析错误的原因,逐步排查。

最终验收成功的时候我们由衷的高兴。

当然,这与老师的指导和示范十分不开的,正是有了老师耐心的指导和对于错误原因分析的帮助,才有了我们的对操作系统的接口的新认识。

对我而言,知识上的收获重要,精神上的丰收更加可喜。

挫折是一份财富,经历是一份拥有。

这次实习必将成为我人生旅途上一个非常美好的回忆!
再次感谢老师的教学与指导,老师您辛苦了。

八.参考文献
[1].汤子瀛,哲凤屏,汤晓丹.计算机操作系统[M].西安:西安电子科技大学出版社,2001
[2].龙晋元.UNIX操作系统教程[M].西安:西北电讯工程学院出版社,1995
[3].王刚.LINUX命令、编辑器与Shell编程[M].北京:清华大学出版社,2012
[4].罗宇,褚瑞.操作系统课程设计[M].北京:机械工业出版社,2005。

相关主题