一个简单shell软件设计方法.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个简单shell软件设计方法

一个简单的shell的软件设计方法 姓名:黄崇 学号:131040061 摘 要 shell是操作系统提供给用户操作的必备窗口,用户通过这个窗口调用操作系统提供的服务。本文并不是在操作系统上实现一个简单的shell,而是在单片机上用C语言编写一个shell实现的框架,以阐述shell的工作原理。 关键词:shell 单片机 命令解析 概述 1、shell概念 Shell(命令解析器),它用于接收用户输入的命令,进行解析,然后调用相应的应用程序,为使用者提供了使用软件的界面。 shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,执行相应的应用程序,并且输出各种各样的处理结果。 2、shell分类 按照界面类型,可以分为图形界面shell和命令行式shell。 图形界面shell(Graphical User Interface shell 即 GUI shell),应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。 命令行式shell(Command Line Interface shell ,即CLI shell),被广泛熟知的有bash / sh / ksh / csh(Unix/linux 系统)、cmd.exe(Windows XP 系统)、(DOS系统)。 3、shell的运行模式 Shell的运行模式可以分为:交互式和非交互式。 交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件(shell script),并且执行其中的命令。当它读到文件的结尾,shell也就终止了。 二、shell软件功能需求分析 1、本文的开发环境 本文希望在单片机上运行这个shell程序,单片机可以是STM32、AVR等等,本文的测试是在S3C2440开发板上完成的。用户输入通常选用PC机的键盘,由于硬件运行平台是单片机,就选用串口进行交互数据的传输。软件开发环境选用linux系统下的arm-linux-gcc交叉编译工具链,该工具链功能强大,可配置性较集成开发环境尤其独到之处。 2、本文shell的基本功能要求 本文目的在于实现一个简单的shell,功能不要求很多,但是要求完全描绘出一个shell的工作原理和shell软件结构。有了这样的软件结构,再向shell里添加其他的功能,就好像做填空题一样。 简单的shell功能可支持的命令虽然很少,但是也要确定选择哪些命令比较合适。实现这样简单的命令最好不需要增添其他的外设,比如说硬盘、网卡,利用最小的单片机系统就能搞定。这样可以节省工作量,将主要精力集中到shell软件结构上,而不是具体命令的实现上。基于这样的考虑,本文选择echo(回显)、md(内存显示)和hello(打印“hello world”)三个命令作为测试。另外,还必须提供shell必备的命令help或者?(打印所有命令的帮助信息)。而且对于每一个命令,通过“help+命令”的输入打印单个命令的详细信息。 三、shell软件设计方案 在shell运行期间,无非涉及两个模块。一个模块是等待用户输入,并把用户输入的字符保存起来。另外一个模块,就是把之前保存的用户输入解析出来,并且根据解析到的命令找到对应的函数地址。再根据用户输入命令的参数,将参数传给这个函数地址,进行函数调用。 shell的核心是如何根据命令字符串,找到对应的函数地址,这是一个算法问题。因为命令字符串相对应着一个函数地址,需要将它们用一个数据结构包含在一起,所以也是一个数据结构的问题。 有什么样的数据结构,就有什么样的算法,设计数据结构成了关键。一个命令的结构体应该包含这样的内容:命令的名字、命令参数的最大个数、命令对应函数的地址、命令的简要帮助信息、命令的详细帮助信息。 有了命令数据结构,在设计一个命令的时候,就将这些命令的必要信息提供好,然后将这些信息填充到它对应的结构体变量中。最后,再将所有命名对应的结构体变量保存在一个数据段中。通过编译器产生的参数,我们可以掌握这个数据段的起始地址和结束地址,从而知道命令数据段的长度,进而知道命令的个数。只要我们知道这个数据段的起始地址,因为命令结构体的长度固定,我们就可

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档