操作系统课程设计说明书new.doc

上传人:marr****208 文档编号:145018464 上传时间:2020-09-15 格式:DOC 页数:7 大小:125.50KB
返回 下载 相关 举报
操作系统课程设计说明书new.doc_第1页
第1页 / 共7页
操作系统课程设计说明书new.doc_第2页
第2页 / 共7页
操作系统课程设计说明书new.doc_第3页
第3页 / 共7页
操作系统课程设计说明书new.doc_第4页
第4页 / 共7页
操作系统课程设计说明书new.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《操作系统课程设计说明书new.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计说明书new.doc(7页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计说明书 在Linux环境下模拟实现命令解释器专业:班级:姓名:学号:班内序号:一 程序概述1. 命令解释器的源程序保存在服务器上的路径为:home / 1-31 / j j . c的目录文件中。可执行程序保存在服务器上的路径为:home / 1-31 / j 。2. 该命令解释器所完成的功能如下:输入pwd指令来查看目前所在的工作目录的绝对路径名称。简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。一般开启终端后默认的“当前工作目录”是用户的“主文件夹”。 输入dir指令显示目录,显示指定目录下或当前目录下的信息,包括文件名等等。输入cd +指令改变当前文件路径,实现

2、将当前用户的当前工作目录更改至 cd 命令中指定的目录或文件夹。如果未指定目标目录名(即只输入“cd”或没输入目录名或文件名),则输出错误信息。输入newdir +指令创建一个新的目录或文件夹,如果创建已存在的目录,则输出创建失败。输入deldir+指令删除一个指定的目录或文件夹,若删除不存在的目录或文件,则显示删除失败。输入exit指令退出命令解释程序 二 概念原理strcmp(str1,str2)函数就是比较参数中两个字符串str1 和 str2的大小(大小写敏感,即A != a),如果完全相等,返回0,如果str1 str2,则返回1。本程序的strcmp()函数就是比较t1与6个指令的

3、大小,来输出相应的信息。chdir()是C语言中的一个系统调用函数,功 能:改变工作目录,用 法: int chdir(const char *path);返回值:成功返回0 ,失败返回-1。mkdir()创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或文件名称。rmdir()删除文件目录,在可以除去该目录前,它必须为空,并且必须有它的父目录的写权限。getcwd()函数的功能是取当前工作目录,getcwd()会将当前工作目录的绝对路径复制到参数buf所指的内存空间中,参数size为buf的

4、空间大小。用 法: char *getcwd(char *buf, int n);perror ()用来将上一个函数发生错误的原因输出到标准错误。三 详细设计#include#include#include#include#includeint main(void) int s; pid_t pid; char t150; /定义数组t1用来存放键盘输入的字符串 char t250; while(1) printf(); char com100; /定义数组com用来存放键盘输入的字符串 gets(com); /com100被gets()函数赋值为0 char t150; char t250;

5、 int i=0,j=0,k=0; int flag=0; while(comi!=0x0d&comi!=0x0a&comi!=0) /0x0a表示回车,0x0d表示换行 if(comi!= &flag=0) t1j+=comi; else if(flag!=0) t2k+=comi; flag=1; i+; t1j=0; t2k=0; if(strcmp(t1,exit)=0) / 退出程序功能,运用strcmp()函数来进行t1与exit 的比较,返回值等于0,2个字串匹配,执行退出 printf(exit program commandn); 指令return 0; else if(st

6、rcmp(t1,cd)=0) /功能:改变当前目录的路径,用strcmp()函数来 比较t1与cd,等于0,执行if语句 if(chdir(t2)!=0) / chdir()改变工作目录,不等于0改变目录失败 printf(enter dir errorn); else if(strcmp(t1,newdir)=0) /功能:新建目录,用strcmp()函数来比较t1与newdir,等于0,执行if,else语句 if(mkdir(t2)!=0) /mkdir()创建一个新目录,不等于0创建失败 printf(creat dir failedn); else mkdir(t2,0700); /

7、创建的目录写了权限 printf(creat dir succedn); else if(strcmp(t1,deldir)=0) /功能:删除目录,用strcmp()函数来比较t1与 deldir,等于0,执行if,else语句 if(rmdir(t2)!=0) /不等于0,删除目录失败 printf(delete dir failedn); else rmdir(t2); printf(delete dir succedn); else if(strcmp(t1,pwd)=0) /功能:显示当前目录或指定目录,运用strcmp()函数 来比较t1与pwd的大小,等于0匹配成功,执行输出 c

8、har t50; getcwd(t,50); /运用getcwd()函数来获取当前的路径并存入数组P,然后输出 printf(current dir:%sn,t);else if(strcmp(t1,dir)=0) /功能:显示当前路径的所有目录和文件,用strcmp()函数比较t1与dir,等于0,执行if语句 DIR *dir; struct dirent *t; /保存readdir返回的具体的文件 if(strcmp(t2,)=0) getcwd (t2,50);dir=opendir(t2); /dir指针用来保存指向opendir函数打开目录后返回的地址while(t=readdi

9、r(dir)!=NULL) /调用readdir函数获得dirent结构 体,通过while循环输出相关信息 printf(%st,t-d_name); printf(n); else printf(enter errrorn); if(pid=fork()0) /创建子进程失败 perror(fork); return(0); wait(&s); return 0;四 完成情况该命令解释器基本能完成所要求的功能,只能在linux环境下进行操作,只限于输入6种指令,包括pwd,dir,cd,newdir,deldir,exit这6种指令,正确的以开头行当成模式和命令的输入并能对其解释,若输入错

10、误会提示出错误信息,请重新输入指令,直到输入正确指令才显示对应信息。五 使用情况编译的功能运行如下:输入pwd指令,显示当前的路径,如下图:输入dir指令,显示当前路径的目录和文件,如下图:输入newdir+目录名,若有重复目录名,显示新建失败,如下图:输入deldir+目录名,若当前路径没有该目录或文件,显示删除失败,如下图:输入cd+目录名,显示当前路径,若输入目录名不存在,显示输入错误,如下图:输入exit指令,退出运行程序,如下图:若输入不是以上6种指令,显示输入错误,如下图:六 设计总结1. 遇到的困难及解决的问题本次设计主要遇到以下2个比较困难的问题,但最终都能把它给解决了。在运行

11、时,输入各个功能指令时,不能输出任何信息,只输出指令错误,原来是解释函数出现问题,数组没有设置好。在dir功能组中,运行时不能显示当前路径的目录,通过上网查找到的资料,用dir指针用来保存指向opendir函数打开目录后返回的地址,调用readdir函数获得dirent结构,再运用getcwd()函数,这样才能正常输出。2. 实践感受这次课程设计一开始没有头绪,感觉无从下手。因为操作系统是上学期修的课程,所以隔了一个假期,都忘了差不多了,所以参考了不少资料。我首先按照课程要求所给的架构去进行分析,然后参考一些书籍来慢慢编写出整个程序出来,虽然在编写的过程中遇到好多问题,有些连自己也解决不了,不过经过与同学的讨论,以及上网查找,终于能把遇到的问题都解决了。在这次过程中我对编程有了更多的认识,学习到了很多以前没用过的函数,特别是字符串处理的,完成之后感觉编程经验有了很大的提高。七 参考文献Linux与Unix Shell 编程指南-高等教育出版

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号