收藏 分享(赏)

实验五 编程实现自己的shell操作系统实验报告.doc

上传人:精品资料 文档编号:10400942 上传时间:2019-11-07 格式:DOC 页数:7 大小:131KB
下载 相关 举报
实验五 编程实现自己的shell操作系统实验报告.doc_第1页
第1页 / 共7页
实验五 编程实现自己的shell操作系统实验报告.doc_第2页
第2页 / 共7页
实验五 编程实现自己的shell操作系统实验报告.doc_第3页
第3页 / 共7页
实验五 编程实现自己的shell操作系统实验报告.doc_第4页
第4页 / 共7页
实验五 编程实现自己的shell操作系统实验报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、学年第 学期操作系统 课程实 验 报 告学 院: 专 业: 班 级: 姓 名: 学 号: 任课教师: -2-摘要shell 是一个命令处理器(command processor)是一个读入并解释你输入的命令的程序,它是介于使用者和操作系统之核心程序(kernel)间的一个接口。它是一个交互性命令解释器。shell 独立于操作系统,这种设计让用户可以灵活选择适合自己的shell。shell 让你在命令行键入命令,经过 shell 解释后传送给操作系统(内核)执行。Shell是一个管理进程和运行进程的程序。有三个主要功能。(1)运行程序:shell 是一个程序启动器。(2)管理输入和输出:shel

2、l 将进程的输入和输出连接到一个文件或其他的进程。(3)编程关键字:shell;解释器;程序; -3-实验日期:2017 年 6 月 12 日实验题目 实验五 编程实现自己的 shell 实验地点实验目的 了解 shell 的功能和其执行程序的过程,编写自己的 shell 程序实验内容1 编辑程序 psh1.c,编译并执行。#include#include#include#define maxargs 20#define arglen 100int main()char *arglistmaxargs+1;int numargs;char argbufarglen;char *makestri

3、ng();numargs=0;while(numargs0) arglistnumargs=0;execute(arglist);numargs=0;return 0;int execute(char *arglist)execvp(arglist0,arglist);perror(“execvp failed“);exit(1);-4-char *makestring(char *buf)char *cp,*malloc();bufstrlen(buf)-1=0;cp=malloc(strlen(buf)+1);if(cp=0)fprintf(stderr,“no memoryn“);exi

4、t(1);strcpy(cp,buf);return cp;2 编辑程序 psh2.c,编译并执行。 #include#include#include#define maxargs 20#define arglen 100int main()char *arglistmaxargs+1;int numargs;char argbufarglen;char *makestring();numargs=0;while(numargs0)arglistnumargs=0;execute(arglist);numargs=0;return 0;int execute(char *arglist)int

5、 pid,exitstatus;pid=fork();switch(pid)case -1:perror(“fork failed“);exit(1);case 0: execvp(arglist0,arglist);perror(“excvp failed“);-5-exit(1);default:while(wait(printf(“child exited with status %d,%dn“,exitstatus8,exitstatuschar *makestring(char *buf)char *cp,*malloc();bufstrlen(buf)-1=0;cp=malloc(

6、strlen(buf)+1);if(cp=0)fprintf(stderr,“no memoryn“);exit(1);strcpy(cp,buf);return cp;3测试运行结果(1)分别执行 psh1 和 psh2,执行过程中,输入 ps 命令写出两个程序运行的结果。并分析区别和原因。(2)在执行 psh2 过程中,输入./psh1 和 ps 命令写程序运行的结果。实验结果(1)-6-分析:在psh1.c中,构造函数intexecute()execvp(arglist0,arglist); ;exit(1);只执行一次,所以在输入ps后直接自动退出;在psh2.c中,构造函数int e

7、xecute(char *arglist) switch()case -1: ; exit(1);case 0: execvp(arglist0,arglist); exit(1);Default: 运用switch函数,所以在输入ps后仍继续执行。(2)-7-遇到问题及解决方法1. 编译后出现较多 warning 警告,如图下:虽编译时出现警告,但是并不影响程序的运行,进而继续执行 。总结经过本次实验的学习,知道了可以通过 PS命令查看用户空间的进程,可以设置参数:-a:列出所在进程,包括其他终端由其他用户运行的程序。-l:更出各个进程的详细状态。 也知道了 shell运行程序的过程:(1)

8、用户键入程序名 a.out(2)Shell 建立一个新的进程来运行这个程序;(3)Shell 将程序从磁盘载入(4)程序在它的进程中运行直到结束。在编程过程中要多了解库函数,可以阅读相应的帮助文件来获得有用的信息。shell 语言与其他编程语言相比真正有说服力。Shell 提供把进程和文件连接在一起的强力的记法。在这个角度上,shell 语言非常适合作为 Unix 操作系统的一般性范例。在 Unix 中,基本的计算代理(agent)是程序,它作为在单独的地址空间中的进程而运行。通过在叫做管道的有向字节流上通信,这些代理协同并相互交流来解决问题。在这个层次上看,Unix 是一个数据流体系。在这个角度上,shell 担任了关键角色,这门语言设计用来把单独的计算代理结合起来解决一个特定问题。 在这次实践过程中,我发现自己对 shell还是缺乏很多的了解,所以还需继续加深学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报