Linux系统实现一个简单的shell过程详细有总结.docx

Linux系统实现一个简单的shell过程详细有总结.docx

ID:57379116

大小:108.61 KB

页数:7页

时间:2020-08-14

Linux系统实现一个简单的shell过程详细有总结.docx_第1页
Linux系统实现一个简单的shell过程详细有总结.docx_第2页
Linux系统实现一个简单的shell过程详细有总结.docx_第3页
Linux系统实现一个简单的shell过程详细有总结.docx_第4页
Linux系统实现一个简单的shell过程详细有总结.docx_第5页
资源描述:

《Linux系统实现一个简单的shell过程详细有总结.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux系统实现一个简单的shell(过程详细有总结)————————————————————————————————作者:————————————————————————————————日期:实现一个简单的shell班级:姓名:学号:1.实验内容能在虚拟shell界面下面相应一些简单的shell命令,如ls,echo,whereis,cd等。实现步骤:(1)在虚拟的shell界面上出现命令提示符($或#);(2)获取用户指令:获取用户在命令提示符后面输入的命令及其参数,并注意命令输入的最大长度;(3)解析指令:对

2、用户输入的命令进行解析,解析出命令名和参数;(4)寻找命令文件:每个命令的执行都必须依靠对应的可执行文件,这些文件的存放路径存放在用户的PATH环境变量里;(5)执行命令:可通过fork()系统调用创建一个进程来完成执行命令的任务,具体的命令执行用execv()函数。2.简单的shell分析a.首先shell是一个程序,在以linux为内核的发型版本中如centos,debian中,类unix系统中,当我们输入用户名和密码登陆之后,我们就执行一个shell解释器,通常是/bin/bash。b.在虚拟的shell界面上

3、出现命令提示符($或#)。c.获取用户指令:获取用户在命令提示符后面输入的命令及其参数,并注意命令输入的最大长度。d.解析指令:对用户输入的命令进行解析,解析出命令名和参数。e.寻找命令文件:每个命令的执行都必须依靠对应的可执行文件,这些文件的存放路径存在在用户的PATH环境变量里。a.执行函数:可通过fork()系统调用创建一个进程来完成执行命令的任务,具体的命令执行用execv()函数。其次shell的基本框架可以用下面的代码概括,这部分代码出自《现在操作系统(英文第三版)》(ModernOperationSys

4、tems)原书P54图1-19这能模拟出shell最基本的行为:接受用户输入<=>执行相应程序,甚至借组execv族函数可以直接给程序传参数。3.简单的shell的设计ØType_prompt()的实现提供终端提示符,比如$或#,在用户路径下,那么用户路径就用~代替,否则会显示完整路径。ØRead_command()的实现获取用户输入的命令和参数,然后使用exec族函数执行。输入的分析,就是对用户输入的字符串进行处理,把一个字符串拆成多个字符串(命令和参数)并分别复制到malloc()分配的空间中。Ø使用execvp

5、()执行命令Execvp()搜索的PATH环境变量中指定目录中的ls命令的位置。表头文件: #include定义函数: intexecvp(constchar*file,char*constargv[]);函数说明: execvp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。返回值:如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。使用type_prompt()显示终端提示符简单shel

6、l实现的详细步骤显示$用户输入使read_command()获取用户输入命令处理命令最后对处理内容进行显示execvp()处理用户输入命令显示结果4.运行界面及结果分析1)使用makefile进行代码构建使用./wshell进行运行相比于真正的shell,wshell有着异曲同工之处,我们可以执行我们写的测试程序test,运行结果如图说明此shell也有执行程序的能力但是不具有自动补全命令,文件名,路径名的功能1)参数不正确报错(调用真正的shell报错机制)2)为了增进用户的体验感,我们在简单shell中,增加了自

7、定义命令的功能,这样可以增加开发自己的想法,比如我们增加about命令用来显示开发者的信息,用以增加程序的趣味性。3)在使用cd这个命令时,遇到了很多千奇百怪的问题,后来翻阅资料发现,像cd这样的命令实际并非可执行程序,(如果想在自己编写的shell里使用)需要自己来实现为内建命令。5.总结u和真实的shell相比,此程序暗藏了很多的bug,毕竟调试的次数很少,内建指令不全,只实现了最常用的cd,即使内建了cd,但是也有很多问题,用户命令分析模式单一,这都是没有编写解释器的缘故。u异常处理机制不够健全,除了使用真正的

8、shell异常处理机制,但是因为调用用户命令时,处理的过程问题,导致有时候无法显示异常问题。对不正确的命令无法进行处理,示例程序直接使用了hello,world,没有复杂的程序。u无法获取上一次输入的命令,导致程序的灵活性很差。u没有对程序进行优化,只是单纯的展示需要的功能。u收获了,linux强大的一面,黑白界面更给人神秘的一面,了解和学习强

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。