命令解释程序的设计与实现

命令解释程序的设计与实现

ID:4184401

大小:145.21 KB

页数:3页

时间:2017-11-29

命令解释程序的设计与实现_第1页
命令解释程序的设计与实现_第2页
命令解释程序的设计与实现_第3页
资源描述:

《命令解释程序的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2期孙巨等:命令解释程序的设计与实现·29·命令解释程序的设计与实现孙巨何景霄(苏州大学215006)摘要本文介绍了一个用TurboC语言设计的操作系统的命令解释程序,说明了该程序的内部命令表结构,提出了命令行获取过程中历史机制的实现方法,解释了该程序中定义的部分内部命令及通过创建子进程执行外部命令的过程。最后指出了该程序如何替代MSDOS的COMMAND.COM程序,并对设计一个更完善的命令解释程序进行了探讨。关键词命令解释程序内部命令表历史机制C语言COMMAND.COM1引言令接口的程序。它可以被视为需完成一定功能要求的从资源管

2、理的角度来看,操作系统具有进程管应用程序。许多第三方厂商也开发了不同的命令解释理、内存管理、设备管理、文件系统管理以及作业管程序,如NORTON公司的NC.EXE,4DOS.EXE理五大部分功能。前四部分组成了操作系统的内核,等等。这些程序都比COMMAND.COM做得好。作业管理是操作系统的外壳。在交互式的操作系统,本文通过用C语言设计的一个命令解释程序说明特别是在台式微机的操作系统中,作业管理即由命令了内部命令表的设计、命令行的参数处理、历史机制解释程序来实现。的引入、内部及外部命令的执行等方法。命令解释程序负责接受用户的键盘命令行

3、,并对2内部命令表其解释执行。MSDOS的命令解释程序是COM2命令解释程序总应支持一组内部命令。所谓内部MAND.COM,其主要的工作过程如图1所示:命令是相对外部命令而言,二者之间的区别是二者所处的位置。内部命令对应的程序都在命令解释程序内部,而外部命令对应的程序则以独立的可执行文件形式存放在磁盘上。本文设计的内部命令表及定义内部命令的形式如下:structcmd-table{char*cmd-name;void(*cmd-func)(void);图1COMMAND.COM的工作过程}commands[]={"DIR",dir,UN

4、IX是一个多用户的操作系统,其1号进程为"DOS",dos,每个终端用户创建一个SHELL进程,每个SHELL"RENAME",ren,进程的工作过程如图2所示:"REN",ren,"DEL",del,"ERASE",del,"TYPE",type,"COPY",copy,"REM",rem"DATE",date,"TIME",time,"VER",ver,图2UNIXSHELL进程的工作过程"VOL",vol,"CD",cd,"CHDIR",cd,操作系统为用户提供了两类接口:系统调用和键"MD",md,盘命令。命令解释程序即是为操作

5、员用户提供键盘命"MKDIR",md"RD",rd,收稿日期:1998年11月1日©1994-2007ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net·30·计算机应用研究1999年"RMDIR",rd中的+D和+T。getcwd()返回当前工作全路径名或"PATH",path,通过getdisk()和getcurdir()来得到当前工作全路径"PROMPT",prompt,名,用它替换prompt中的+P。"EXIT"

6、,exit,显示命令行提示符的函数是show-prompt()。"ECHO",echo,3.2命令行的获取"CLS",cls,命令行获取最简单的方法是通过C语言函数gets"LS",ls,(char*cmd-buffer)来实现,获取后的命令行由cmd-"CAT",cat,buffer指向。命令行处理还可引入历史机制。本系统设};立全程字符串数组history[10],用以记忆最近输入过其中,cmd-name为内部命令名字符串,cmd-func的十条命令。通过按键‘↑'可启动历史机制。在命令行为指向对应于内部命令函数的指针。此命令表中的

7、命提示符状态下,按一下‘↑'键即可调出最近输入的命令令数目可随意扩充。为了在搜索内部命令表时能确切行,若再按一下‘↑'键,重新显示出更上次输入的命令知道内部命令表中内部命令的数目,而且程序不应随行,依此类推。若要执行以前键入的命令行,只要通过着命令数目的增减而变动,可以通过定义维数宏来实‘↑'键将其调出,然后按回车键即可。现:每次获得的键盘命令行均需更新history数组。为#definedim(x)(sizeof(x)/sizeof(x[0]))了避免每次数组元素的搬移,本程序将history数组看于是,内部命令数目即为dim(com

8、mands)。作是一个循环队列,即将history[0]看作是history[9]3键盘命令的获取的下一个分量。用curhis变量存放最新命令行的his2命令的获取可以通过给出菜单从鼠标等点设备上tory分

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

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

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