版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上学年第 学期 操作系统 课程实 验 报 告学 院: 专 业: 班 级: 姓 名: 学 号:
2、; 任课教师: 专心-专注-专业摘要shell 是一个命令处理器(command processor)是一个读入并解释你输入的命令的程序,它是介于使用者和操作系统之核心程序(kernel)间的一个接口。它是一个交互性命令解释器。shell 独立于操作系统,这种设计让用户可以灵活选择适合自己的shel
3、l。shell 让你在命令行键入命令,经过shell 解释后传送给操作系统(内核)执行。Shell是一个管理进程和运行进程的程序。有三个主要功能。(1)运行程序:shell是一个程序启动器。(2)管理输入和输出:shell将进程的输入和输出连接到一个文件或其他的进程。(3)编程关键字:shell;解释器;程序; 实验日期:2017年 6月 12日实验题目实验五 编程实现自己的shell 实验地点实验目的了解shell的功能和其执行程序的过程,编写自己的shell程序实验内容1 编辑程序psh1.c,编译并执行。#include<stdio.h>#include<signal.
4、h>#include<string.h>#define maxargs 20#define arglen 100int main()char *arglistmaxargs+1; int numargs; char argbufarglen; char *makestring(); numargs=0; while(numargs<maxargs) printf("Arg%d?",numargs); if(fgets(argbuf,arglen,stdin)&&*argbuf!='n') arglistnumargs+
5、=makestring(argbuf); else if(numargs>0) arglistnumargs=0; execute(arglist); numargs=0; return 0;int execute(char *arglist)execvp(arglist0,arglist);perror("execvp failed");exit(1);char *makestring(char *buf)char *cp,*malloc(); bufstrlen(buf)-1='0' cp=malloc(strlen(buf)+1); if(cp=
6、0)fprintf(stderr,"no memoryn");exit(1);strcpy(cp,buf);return cp;2 编辑程序psh2.c,编译并执行。 #include<stdio.h>#include<signal.h>#include<string.h>#define maxargs 20#define arglen 100int main()char *arglistmaxargs+1; int numargs; char argbufarglen; char *makestring(); numargs=0; wh
7、ile(numargs<maxargs) printf("Arg%d?",numargs); if(fgets(argbuf,arglen,stdin)&&*argbuf!='n') arglistnumargs+=makestring(argbuf); else if(numargs>0)arglistnumargs=0; execute(arglist); numargs=0; return 0;int execute(char *arglist)int pid,exitstatus;pid=fork();switch(pid
8、)case -1:perror("fork failed"); exit(1);case 0: execvp(arglist0,arglist); perror("excvp failed"); exit(1);default:while(wait(&exitstatus)!=pid); printf("child exited with status %d,%dn",exitstatus>>8,exitstatus&0377);char *makestring(char *buf)char *cp,*ma
9、lloc(); bufstrlen(buf)-1='0' cp=malloc(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)分析:在psh1.c中,构造函数intexecute()execvp(arglist0,arglist); ;e
10、xit(1);只执行一次,所以在输入ps后直接自动退出;在psh2.c中,构造函数int execute(char *arglist) switch()case -1: ; exit(1);case 0: execvp(arglist0,arglist); exit(1);Default: 运用switch函数,所以在输入ps后仍继续执行。 (2)遇到问题及解决方法1. 编译后出现较多warning警告,如图下:虽编译时出现警告,但是并不影响程序的运行,进而继续执行 。 总结经过本次实验的学习,知道了可以通过PS命令查看用户空间的进程,可以设置参数:-a:列出所在进程,包括其他终端由其他用户运行的程序。-l:更出各个进程的详细状态。 也知道了shell运行程序的过程:(1)用户键入程序名 a.out(2)Shell建立一个新的进程来运行这个程序;(3)Shell将程序从磁盘载入(4)程序在它的进程中运行直到结束。在编程过程中要多了解库函数,可以阅读相应的帮助文件来获得有用的信息。shell 语言与其他编程语言相比真正有说服力。Shell 提供把进程和文件连接在一起的强力的记法。在这个角度上,shell 语言非常适合作为 Unix 操作系统的一般性范例。在 Unix 中,基本的计算代理(agent)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省2025上半年中共黑龙江省委党校(黑龙江省行政学院)招聘专业技术人员19人公笔试历年参考题库典型考点附带答案详解
- 深圳市2025年5月广东深圳市光明区信访局选聘特聘专干1人笔试历年参考题库典型考点附带答案详解
- 2026浙江海宁经编产业园区开发有限公司招聘2人笔试历年难易错考点试卷带答案解析
- 2026无锡市辅警招聘考试题及答案
- 2026收纳系统行业前景趋势分析及未来投资方向规划报告
- 2025-2030中国青蒿市场深度调研与竞争格局分析研究报告版
- 2026中国动力电池FPC行业运行态势与盈利前景预测报告
- 2026中国高纯度二羟基丙酮行业发展现状与投资趋势预测报告
- 2026全球及中国苯乙基行业竞争状况及投资前景预测报告
- 2026中国农业级硒酸钠行业现状动态及需求规模预测报告
- 北京市西城区2026年高三一模英语试卷(含答案)
- 商的近似数(教学设计)-2024-2025学年五年级上册数学 人教版
- 2024年宁夏中考数学真题
- 《华为OLT产品介绍》课件
- 2025年中考英语专题-阅读六选五解题策略教学设计
- ZPW-2000A型无绝缘移频自动闭塞系统说明书
- 10S505 柔性接口给水管道支墩
- SYT 0452-2021 石油天然气金属管道焊接工艺评定-PDF解密
- 日本的大化改新(课件)
- 影响我最大的一个人作文讲评
- 装饰装修项目技术标文件
评论
0/150
提交评论