(完整版)Linux命令解释器的设计本科毕业设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

摘要 (1)

前言 (2)

1 绪论 (4)

1.1 Shell的定义 (4)

1.1.1 UNIX Shell (5)

1.2 shell的历史 (6)

1.3 shell的职责 (7)

2开发环境和开发工具介绍 (7)

2.1开发环境--Ubuntu (7)

2.2开发工具-GCC (8)

3 模拟shell设计 (8)

3.1简单shell设计思想 (8)

3.2复杂shell设计思想 (10)

3.2.1 作业及作业前后调度实现方法 (10)

3.2.2进程组、会话与终端 (12)

3.2.3命令行 (13)

3.2.4 &、bg、fg等信号的思想 (14)

3.2.5 管道 (15)

3.2.6重定向............................... 错误!未定义书签。

4 Shell的实现 (16)

4.1数据结构 (16)

4.2 程序结构............................... 错误!未定义书签。

4.2.1初始化环境........................... 错误!未定义书签。

4.2.2解析命令............................. 错误!未定义书签。

4.2.3查找外部程序 (19)

4.2.4执行命令............................. 错误!未定义书签。

4.2.5管道................................. 错误!未定义书签。

4.2.6作业控制命令 (21)

5 结束语 (23)

致谢 (24)

参考文献 (24)

附录 (26)

Linux命令解释器的设计

摘要:随着Linux系统使用的越来越广泛,越来越多的人开始深入的研究Linux,特别是对Linux shell的研究是对Linux研究最主要的部分。本文主要是研究了对shell的功能的一些认识,而且对shell的列表,管道,输入重定向和输出重定向等命令功能进行了实现,可以对shell命令解释器进行更加全面的认识和充分的了解,而且在shell命令解释器中执行正确的命令,从而对它的原理,方法等在程序中必须用到的知识原理有比较清楚的认识,最后通过对每个功能的详细分析,进而编写出恰当实现各个功能的代码,从而做成一个Shell命令解释器。

并且,在嵌入式领域中,与人们的需求相比,硬件的资源是微不足道的。这就意味着我们把不多的资源利用完成很多的需求,而嵌入式的设计在PC上编程是有很大不同的,它其实只需要一个很大程序的比较小的一方面就可以满足它的需求,因此我们必须把一些无用的程序删掉来换成空间。在嵌入式领域中就像传统的K shell,C shell,Bourne shell等大型的shell程序就会令硬件方面的东西很少。因此我们需要一个更符合嵌入式系统中使用的Shell。

关键词:Shell;程序;设计与实现;嵌入式;Linux

Abstract:Accompanied by the popularize of the Linux,more and more people are doing deeply study in it.The study of shell is the most important thing when study the Linux.It mainly includes the understand of some knowledge and function of the micro linux shell.Through the study of the orders in the shell like list,pipe,input redirect and output redirect,readers can to use these orders accuray in shell which play an important role in programming later.Code accuray and achieve a simple shell with the functions above after analyzing the details of every functions module.

Moreover,in the embedded field,the and programming in the traditional PC,is very different ,and it often requires only a small part of a large program on meet its needs,so we exchange for space .In the embedded field,as the traditional K shell,C shell,Bourne shell and other large-scale shell program will make our the shell,this is my another objective of this design.

Key words:Shell,Process,Design,Design and achieve,embedded,Linux

前言

shell作为Linux系统的最外层的部分,为使用者提供必备的接口。

Shell作为用户和Linux内核之间的接口程序,起着一个桥梁的作用,假如把Linux内核当做是一个球心,那么shell就是球体的表面。从shell 向Linux发出命令时,内核会对该命令做出相应的解释。本论文就是模拟一个shell命令解释器,包括:管道、内部命令、外部命令、重定向命令。

管道是Linux支持的最初Unix IPC其中的一个,具有这一些特点:管道是半双工的,里面的数据只能单向的流动;当双方需要通信时,要创造出来两个管道;但是只能用于父子进程和兄弟进程之间(具有亲缘关系的进程);其实就是他们自己独自组成一种的文件系统,这个文件系统是独立的:管道相对于管道两端的进程来说,就是独立的文件,它不是一般的文件,它并不属于一种文件系统,而是自己有自己的特点,独自构成一种文件系统,而且只是在内存中。当写数据时一个进程向其中一个管道中写的数据会被管道另一头的进程读出,而且写入的数据每次都在管道缓冲区的最后,并且每次都是从缓冲区的首端读数据。

每当执行shell命令行时一般会打开三个标准文件,这三个标准文件

相关文档
最新文档