- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1设计内容与要求.doc
1设计内容与要求
1.1课程设计内容
用户在shell提示符($或#)下输入的每一个命令都由shell先解释,然后传给内核执行。本课程设计要求用C语言编写一个简单的shell程序,希望达到以下目的:
用C语言编写清晰易读、设计优良的程序,并附有详细的文档。
熟悉使用Linux下的软件开发工具,例如gcc、gdb和make。
在编写系统应用程序时熟练使用man帮助手册。
学习使用POSIX/UNIX系统调用、对进程进行管理和完成进程之间的通信,例如 使用信号和管道进行进程间通信。
理解并发程序中的同步问题。
课程设计要求
minish解释程序的重要特征
本课程设计要实现一个简单的命令解释器,也就是Linux中的shell程序。课程设计程序起名为minish,要求其设计类似于目前流行的shell解释程序,如bash、csh、tcsh,但不需要具备那么复杂的功能。minish程序应当具有如下一些重要的特征:
能够执行外部程序命令,命令可以带参数。
能够执行f、bcd、history、exit等内部命令。
使用管道和输入输出重定向。
支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行。
除此之外,在这个课程设计中还须做到:
使用make工具建立工程。
使用调试器gdb来调试程序。
提供清晰、详细的设计文档和解决方案。
Linux内核设计一个shell程序应:
执行外部程序命令,命令可以带参数。
fg、bcd、history、exit等内部命令。
管道和输入输出重定向。
提供作业控制功能,包括打印作业的清单,改变当前运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行。1. shell程序bash的使用方法,从感性上把握shell程序。
shell程序应提供一个命令提示符,表示接收用户的输入如或myshell之类,每次执行完成后再打印下一个命令提示符。当用户没有输入时,myshell需要一直处于随时等待输入状态,同时在屏幕上显示一些必要的信息。
2. 命令行
当用户在提示符后面输入命令时,输入的整行内容叫做“命令行字符串”,shell应当保存每一条命令行字符串,直到它表示的作业执行结束,其中包括后台作业和被挂起的作业。
shell应当给每一个命令行字符串赋一个非负整数标识符。这个整数用来标识存储作业的数据结构,作业的数据结构应包含整个命令行字符串所表示的内容。一旦命令行字符串代表的作业执行结束,shell就要删掉表示这个作业的数据结构。标识符可以循环使用。
对于包含内部命令的命令行字符串,不需要为它们建立作业的数据结构,因为它们本身的内容全部包含在shell程序中。3. 外部命令和内部命令
在大多数情况下,用户输入的命令是执行存储在文件系统中的可执行程序,我们叫做外部命令或外部程序。shell应当支持在执行这些程序时可以将输入/输出重新定向到一个文件,并允许若干个程序使用管道串联起来。从本课程设计的角度来讲,我们把由管道连接起来的复合命令以及单独使用的命令统称为作业。
外部命令的形式是一系列分隔的字符串。第一个字符串是可执行程序的名字,其他的是传给这个外部程序的参数。如果第一个字符串所声明的可执行文件并不存在或者不可执行,则认为这个命令是错误的。
解释器还须支持一些内部命令,这些命令在shell程序内部实现了特定的动作,下面是一些内部命令,如果用户提交一个内部命令,shell应当按照下面的描述执行相应动作。 exit:结束所有的子进程并退出shell。
.分析用户输入
(1) 分隔符和特殊字符
分析用户输入的语法分析器应具有下面介绍的功能,它能够检查用户的输入错误。如果用户输入的某些地方出错了,shell应提供合理的出错信息。
就像商业级别的shell一样,shell每次接受用户输入的一行命令,在用户按下回车键(Enter)后开始执行分析动作。空命令不产生任何操作,而只是打印一个新提示符。
定义空格符为分隔符,shell应能处理命令行中间和前后出现的重复空格符。
某些字符被称做“元字符”,它们在用户输入的上下文中具有特定的含义。这些字符包括“、|、、”。shell假设这些字符不会出现在程序名、参数名和文件名中,它们是shell的保留字符。下面几小节会解释这些元字符的含义。
(2) 内部命令
如果命令行字符串符合前面介绍的内部命令的格式,它就作为一个内部命令被解释。如果不是,就要考虑可能是外部程序的执行,或者是错误的。
UNIX系统调用chdir 系统调用系统调用
文档评论(0)