- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验小组《OS操作系统实验一》----Shell解释程序实现文档
《OS操作系统实验一》:
Shell解释程序(YSH0)实现文档OS实验小组
2005年6月12日星期日 王 克(组长) 杜可斌 徐 瑞 张 劲
目录:
1 概述 2
2 YSH0功能与设计 2
2.1 程序形式 2
2.2 内部命令和外部命令 2
2.3 重定向和管道命令 2
2.4 特殊命令键 3
2.5 程序结构图 3
3 命令行分析器设计 4
3.1 功能 4
3.2 实现 5
4 命令解释执行的实现 6
4.1 使用到的系统调用 6
4.2 程序结构 6
5 程序源代码相关说明 7
5.1 文件说明 7
5.2 主要函数说明 7
5.3 主要数据结构说明 7
6 简易测试 8
6.1 编译运行测试 8
6.2 内部命令测试 9
6.3 外部命令测试 9
6.4 重定向和管道命令测试 10
6.5 测试总结 10
7 总结及感想 10
7.1 王克 10
7.2 杜可斌 11
7.3 张劲 11
7.4 徐瑞 11
8 附录 11
8.1 参考资料 11
8.2 源代码 11
概述
由于时间和能力的限制,这个的实验是参考实验教程上源代码及相关说明,但程序源代码的差异性在60%以上,从整体结构设计到具体的实现细节都有不同程度的改进和提高,但也可能带来一些BUG。
通过对操作系统课程的学习,我们对Linux有了进一步更深入的认识,从它的使用到内核编译都有所了解。
第一个实验是实现在Linux下实现一个Shell解释程序,所以我们将其命名为Linux Shell 0(表示一个最简单的Shell程序)。它是用户与系统内核沟通的中介,为用户使用操作系统的服务提供一个命令界面。用户在提示符下输入一个命令,Shell先解释后通过内核函数调用执行。
YSH0功能与设计
程序形式
用户运行本程序,lsh0提供一个命令提示符[lsh0#],程序一直等待用户输入命令,直到exit命令结束。
内部命令和外部命令
解释器首先支持一定的内部命令,实现特定的动作,它包括:
exit: 结束所有子程序并退出。
jobs:打印当前正在后台运行的作业和挂起的作业信息。本SHELL采用十分便于用户理解的格式。
fg %int:把进程标识符为<int>的作业放到前台运行。如果这个作业已经暂停,就让它继续开始运行。并开始等待此前台进程执行完毕。
bg %int:在后台执行进程标识符为<int>的已经挂起的进程。
外部命令的形式是一系列分隔的字符串。第一个字符串为可执行程序的程序名,其余的参数。它必将位于环境变量所设置的某个路径中,如果不存在则表示命令错误。
重定向和管道命令
SHELL的命令大部分都是从标准输入信息并将输出信息送到标准输出。分别缩写为stdin和stdout。默认情况下,stdin为键盘,stdout为屏幕。但可使用>和<将输入和输出重定向到文件中,>将信息存入一文件以便保存,而不送到屏幕。使用<将信息从文件中输入。并且两者可以组合使用。
SHELL也提供管道,利用管道可以将一个命令的输出作为另一个命令的输入来使用。这种方法比使用临时文件来连接两个命令要方便和高效的多。
特殊命令键
Ctrl + Z:产生SIGTSTP信号,这个信号是让SHELL挂起在前台运行的作业。如果没有任何前台作业,则无效。
Ctrl + C:产生SIGNT信号,这个信号是让SHELL杀死前台运行的作业的进程。如果没有任何前台作业,则无效。
程序结构图
命令行分析器设计
功能
为Shell程序提供命令行的分析,并对信息进行分析存储,为解释执行做好准备。当用户在提示符后面输入命令时,输入的整行内容为一个“命令行字符串”。lsh0分析器的先将保存起来,直到它的作业执行结束。
在执行一个命令行字符串时,lsh0也同时为其分配一个非负整数标识符,用来标识此作业的数据结构。当其作业执行完毕时,就删掉这个作业的整个数据结构。
实现
命令解释执行的实现
使用到的系统调用
pid_t for(void);
int execv(const *file, char *const argv[]);
void exit(int status);
int wait(int *stat_loc);
pid_t waitpid(pid_t pid; int *stat_loc, int options);
int dup2(int fildes, int fides2);
int pipe(int fides[2]); (详见教程上,不再赘述了)
程序结构
程序源代码相关说明
文件说明
文件名 说
您可能关注的文档
- CN201310489476.1-用于电子元器件一体成型技术的环氧胶黏剂及其制备方法.pdf
- CN201310490948.5-一种降血压海参口服液的制造方法.pdf
- CN201310490941.3-一种增强免疫力的海参口服液的制造方法.pdf
- CN201310490956.X-一种补血润燥的海参胶囊的制造方法.pdf
- CN201310490959.3-一种固本培元的海参胶囊的制造方法.pdf
- CN201310490963.X-一种海参营养胶囊的制造方法.pdf
- CN201310490969.7-一种海参胶囊的制造方法.pdf
- CN201310490961.0-一种滋阴健阳的海参胶囊的制造方法.pdf
- CN201310490951.7-一种降血糖海参口服液的制造方法.pdf
- CN201310491362.0-一种增加伤口愈合速度的海参咀嚼片的制造方法.pdf
- 2024-2025学年度怀化职业技术学院《形势与政策》期末考试检测卷及答案详解(典优).docx
- DB42T 1122-2015 绿色食品 杏鲍菇生产技术规程.docx
- DB42T 1073-2015 地理标志产品 神农百花蜜.docx
- DB42T 1024-2014 牛支原体肺炎诊断技术规程.docx
- DB42T 473-2021 早熟桃生产技术规程.docx
- DB42T 353-2011 地理标志产品 九资河茯苓.docx
- DB42T 350-2011 地理标志产品 来凤漆筷.docx
- DB42T 349.8-2015 武汉市主要行业取(用)水定额 第8部分:饮料制造.docx
- DB42T 1081-2015 湖北省土地整治工程量清单计价规范.docx
- DB42T 1010-2014 地理标志产品 老君眉茶.docx
文档评论(0)