题目1 shell 程序设计

题目1 shell 程序设计

ID:13543849

大小:248.50 KB

页数:24页

时间:2018-07-23

题目1  shell 程序设计_第1页
题目1  shell 程序设计_第2页
题目1  shell 程序设计_第3页
题目1  shell 程序设计_第4页
题目1  shell 程序设计_第5页
资源描述:

《题目1 shell 程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、题目1shell程序设计1.1实验目的Linux操作系统中shell是用户与系统内核沟通的中介,它为用户使用操作系统的服务提供了一个命令界面。用户在shell提示符($或#)下输入的每一个命令都由shell先解释,然后传给内核执行。本实验要求用C语言编写一个简单的shell程序,希望达到以下目的:l用C语言编写清晰易读、设计优良的程序,并附有详细的文档。l熟悉使用Linux下的软件开发工具,例如gcc、gdb和make。l在编写系统应用程序时熟练使用man帮助手册。l学习使用POSIX/UNIX系统调用、对进程进行管理和完成进程之间的通信,例如使用信号和管道进行进程间

2、通信。l理解并发程序中的同步问题。l锻炼在团队成员之间的交流与合作能力。1.2实验要求1.2.1ysh解释程序的重要特征本实验要实现一个简单的命令解释器,也就是Linux中的shell程序。实验程序起名为ysh,要求其设计类似于目前流行的shell解释程序,如bash、csh、tcsh,但不需要具备那么复杂的功能。ysh程序应当具有如下一些重要的特征:l能够执行外部程序命令,命令可以带参数。.。l能够执行fg、bg、cd、history、exit等内部命令。l使用管道和输入输出重定向。l支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前台/后台

3、状态,以及控制作业的挂起、中止和继续运行。除此之外,在这个实验中还须做到:l使用make工具建立工程。l使用调试器gdb来调试程序。l提供清晰、详细的设计文档和解决方案。1.2.2ysh解释程序的具体要求1.Shell程序形式本实验的ysh程序设计不包括对配置文件和命令行参数的支持。如果实现为像bash那样支持配置文件,当然很好,但本实验并不要求。ysh应提供一个命令提示符,如ysh>,表示接收用户的输入,每次执行完成后再打印下一个命令提示符ysh>。当用户没有输入时,ysh需要一直处于随时等待输入状态,同时在屏幕上显示一些必要的信息。2.外部命令和内部命令在大多数情

4、况下,用户输入的命令是执行存储在文件系统中的可执行程序,我们叫做外部命令或外部程序。ysh应当支持在执行这些程序时可以将输入输出重新定向到一个文件,并允许若干个程序使用管道串联起来。从本实验的角度来讲,我们把由管道连接起来的复合命令以及单独使用的命令统称为作业。外部命令的形式是一系列分隔的字符串。第一个字符串是可执行程序的名字,其他的是传给这个外部程序的参数。如果第一个字符串所声明的可执行文件并不存在或者不可执行.则认为这个命令是错误的。解释器还须支持一些内部命令,这些命令在ysh程序内部实现了特定的动作,下面是一些内部命令,如果用户提交了一个内部命令,ysh应当按照

5、下面的描述执行相应动作。lexit:结束所有的子进程并退出ysh。ljobs:打印当前正在后台执行的作业和挂起的作业信息。输出信息应采用便于用户理解的格式。jobs自身是一条内部命令,所以不需要显示在输出上。lfg%:把所标识的作业放到前台运行。如果这个作业原来已经停止,那么让它继续运行。shell应当在打印新的命令提示符之前等待前台运行的子进程结束。lbg%:在后台执行标识的已挂起的进程。3.命令行当用户在提示符后面输入命令时,输入的整行内容叫做“命令行字符串”,ysh应当保存每一条命令行字符串,直到它表示的作业执行结束,其中

6、包括后台作业和被挂起的作业。ysh应当给每一个命令行字符串赋一个非负整数标识符。这个整数用来标识存储作业的数据结构,作业的数据结构应包含整个命令行字符串所表示的内容。一旦命令行字符串代表的作业执行结束,ysh就要删掉表示这个作业的数据结构。标识符可以循环使用。对于包含内部命令的命令行字符串,不需要为它们建立作业的数据结构,因为它们本身的内容全部包含在ysh程序中。4.前台和后台作业ysh应当能够执行前台和后台作业。shell在前台作业执行结束之前要一直等待。而在开始执行后台作业时要立刻打印出提示符ysh>,让用户输入下一条命令。前台作业的执行总是优先于执行一个后台作业

7、,ysh不需要在打印下一个提示符前等待后台作业的完成,无论是否有后台作业的执行,只要完成一个前台作业,便立即输出提示符ysh>。一个后台作业结束时,ysh应当在作业执行结束后立刻打印出一条提示信息。下面语法中会在命令语法分析程序中介绍相应的语法来支持后台作业。5.特殊键又称组合键。通过终端驱动程序,特殊的组合键可以产生信号给ysh,程序应当对这些信号做出适当的响应。lCtrl+Z:产生SIGTSTP信号,这个信号不是挂起ysh,而是让shell挂起在前台运行的作业,如果没有任何前台作业,则该特殊键无效。lCtrl+C:产生SIGINT信号,这个信号不

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

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

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