欢迎来到天天文库
浏览记录
ID:46405696
大小:131.00 KB
页数:7页
时间:2019-11-23
《实验五 编程实现自己的shell操作系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学年第学期操作系统课程实验报告学院: 专业:班级: 姓名: 学号: 任课教师: 摘要shell是一个命令处理器(commandprocessor)——是一个读入并解释你输入的命令的程序,它是介于使用者和操作系统之核心程序(kernel)间的一个接口。它是一个交互性命令解释器。shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell。shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行。Shell
2、是一个管理进程和运行进程的程序。有三个主要功能。(1)运行程序:shell是一个程序启动器。(2)管理输入和输出:shell将进程的输入和输出连接到一个文件或其他的进程。(3)编程关键字:shell;解释器;程序;-7-实验日期:2017年6月12日实验题目实验五编程实现自己的shell实验地点实验目的了解shell的功能和其执行程序的过程,编写自己的shell程序实验内容1.编辑程序psh1.c,编译并执行。#include#include#include#definemaxargs20#def
3、inearglen100intmain(){char*arglist[maxargs+1];intnumargs;charargbuf[arglen];char*makestring();numargs=0;while(numargs0){arglist[numargs]=0;execu
4、te(arglist);numargs=0;}}}return0;}intexecute(char*arglist[]){execvp(arglist[0],arglist);perror("execvpfailed");exit(1);}-7-char*makestring(char*buf){char*cp,*malloc();buf[strlen(buf)-1]=' ';cp=malloc(strlen(buf)+1);if(cp==0){fprintf(stderr,"nomemory");exit(1);}strcpy(cp,buf);r
5、eturncp;}1.编辑程序psh2.c,编译并执行。#include#include#include#definemaxargs20#definearglen100intmain(){char*arglist[maxargs+1];intnumargs;charargbuf[arglen];char*makestring();numargs=0;while(numargs6、din)&&*argbuf!='')arglist[numargs++]=makestring(argbuf);else{if(numargs>0){arglist[numargs]=0;execute(arglist);numargs=0;}}}return0;}intexecute(char*arglist[]){intpid,exitstatus;pid=fork();switch(pid){case-1:perror("forkfailed");exit(1);case0:execvp(arglist[0],arglist);perror("7、excvpfailed");-7-exit(1);default:while(wait(&exitstatus)!=pid);printf("childexitedwithstatus%d,%d",exitstatus>>8,exitstatus&0377);}}char*makestring(char*buf){char*cp,*malloc();buf[strlen(buf)-1]=' ';cp=malloc(strlen(buf)+1);if(cp==0){fprintf(stderr,"nomemory");exit(1);}strcp8、y(cp,buf);returncp;}3.测试运行结果(1)分别执行psh1和
6、din)&&*argbuf!='')arglist[numargs++]=makestring(argbuf);else{if(numargs>0){arglist[numargs]=0;execute(arglist);numargs=0;}}}return0;}intexecute(char*arglist[]){intpid,exitstatus;pid=fork();switch(pid){case-1:perror("forkfailed");exit(1);case0:execvp(arglist[0],arglist);perror("
7、excvpfailed");-7-exit(1);default:while(wait(&exitstatus)!=pid);printf("childexitedwithstatus%d,%d",exitstatus>>8,exitstatus&0377);}}char*makestring(char*buf){char*cp,*malloc();buf[strlen(buf)-1]=' ';cp=malloc(strlen(buf)+1);if(cp==0){fprintf(stderr,"nomemory");exit(1);}strcp
8、y(cp,buf);returncp;}3.测试运行结果(1)分别执行psh1和
此文档下载收益归作者所有