2022年操作系统shell命令解析器 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年操作系统shell命令解析器 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统shell命令解析器 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一程序概述1.完成的任务在 Linux 环境下编写一个简单的命令解释器即定义一个命令使它具有Linux 中某些命令的功能,可以实现获取用户输入的指令、可解析指令、可执行命令等功能,以此来熟悉 Linux 编程环境,加强对Linux 命令的理解及函数的运用。2.遇到的困难及解决的问题在程序设计过程中,遇到的困难主要有以下几个:一、系统函数调用问题;二、对文件的操作;三、复制文件。通过查阅 Linux c 函数库后, 知道了如何调用系统函数,并解决了对文件的操作;而文件的复制,则采用了如下思想:打开一个输入文件,创建一个输出文件,建立一个 BUF 大小的缓冲区; 然后在判断输入文件未完的循环中,每
2、次读入多少就向输出文件中写入多少,直到输入文件结束。二概念原理1.基本概念为用户提供了输入命令和参数,以此向Linux 内核发送请求以便运行程序的界面系统级程序。下图为Linux 、 UNIX 系统层次结构图:2.原理解释用户输入的命令行,提交到系统内核处理,并将结果返回给用户。三详细设计1.总体设计运行程序后,首先初始化,显示系统有的命令,然后通过用while(1) 循环,连续的获取用户输入的命令,一直到用户输入quit 退出循环,接着程序结束。2.主要函数及功能2.1 int init() 显示系统命令等信息。int init()/ 初始化 cout *欢迎使用 GPLinux*endl;
3、 cout * 系统命令 *endl; cout * 1.quit 退出! *endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - cout * 2.mypwd 显示当前目录! *endl; cout * 3.mycdir 创建新目录! *endl; cout * 4.mydir 显示文件! *endl; cout * 5.mycd 改变路径! *endl; cout * 6.mydel 删除文件! *endl; cou
4、t * 7.mydeldir 删除目录! *endl; cout * 8.mycp 复制文件! *endl; cout *endl; return 0; 2.2 int MyPwd() 用于显示当前目录。int MyPwd() / 显示当前目录 char b255; getcwd(b, sizeof (b); /将当前的工作目录绝对路径复制到参数b中所指的内存空间coutbendl; return 0; 2.3 int MyCDir() 用于创建新目录。int MyCDir() / 创建新目录 if (strcmp( , param_list1) = 0) cout 出错!请输入参数! end
5、l; return -1; if (mkdir(param_list1, 0) = -1) / 判断创建目录是否成功,并且可以修改权限 cout 创建目录失败!endl; return -1; else cout 创建目录成功!endl; return 0; 2.4 int fn(const char * file, const struct stat * sb, int flag) 和 int MyDir() 用于从指定的目录开始,往下一层层地递归式遍历子目录和文件,然后输出到界面。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
6、- 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - int fn( constchar * file, conststruct stat * sb, int flag) / 第一参数指向当时所在的目录路径,第二参数为stat 结构指针,第三个参数为旗标 if (flag = FTW_D) /FTW_D为目录 coutfile- 目录 endl; if (flag = FTW_F) /FTW_F 为一般文件 coutfile- 文件 endl; return 0; int MyDir()/ 显示目录和文件 ftw( /home/ , fn,
7、 500); /第一个参数为指定的开始目录,第二个参数为fn 函数,第三个参数为进行遍历目录时可同时打开的文件数 2.5 int MyCd() 用于改变路径。int MyCd() / 改变路径 if (strcmp( , param_list1) = 0) cout 出错!请输入路径!endl; return -1; if (chdir(param_list1) = -1) / 判断要改变的路径存不存在 cout 目录不存在! endl; return -1; return 0; 2.6 int MyDel() 用于删除文件。int MyDel() / 删除文件 if (strcmp( , p
8、aram_list1) = 0) cout 出错!请输入文件要删除的文件名!endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - return -1; if (unlink(param_list1) = -1) /判断文件删除是否成功 cout 文件删除失败! endl; return -1; else cout 文件删除成功! endl; return 0; 2.7 int MyDelDir() 用于删除文件夹。int
9、 MyDelDir()/ 删除文件夹 if (strcmp( , param_list1) = 0) cout 出错!请输入要删除的目录!endl; return -1; if (rmdir(param_list1) = -1) / 判断目录删除是否成功 cout 目录删除失败! endl; return -1; else cout 目录删除成功! endl; return 0; 2.8 void out(char * s1, char * s2)和int MyCp() 用于复制文件,其中BUF 用来表示缓冲区大小,CM 用来定义创建文件的权限。void out( char *s1, char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统shell命令解析器 2022 操作系统 shell 命令 解析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内