- 35
- 0
- 约5.94千字
- 约 10页
- 2017-02-08 发布于重庆
- 举报
《系统软件课程设计-操作系统》实验报告
《系统软件课程设计》
实验报告
华东理工大学信息科学与工程学院
一.课程设计题目
Shell编程
二.课程设计成员
胡伟强 计121 三.课程设计内容和要求
学习如何编写一个Linux的外壳——Shell,即命令解释程序。学习怎样接受命令、解释命令、执行命令,特别是采用创建子进程的方式来执行一个程序,以及父进程如何继续子进程的工作。?
要求:
1、编写一个C语言程序作为Linux内核的shell命令行解释程序,所执行的结果需和系统命令行方式保持一致。
2、对用户编写的shell增加后台运行功能。即用户可以使用””作为一个命令结束,以启动下一个命令。
3、修改程序,增加I/O重定向功能。即用户可以使用””、””和”|”符号改变程序/文件的输入和输出。
四. 软件系统设计
1、函数调用图:
函数功能说明:
函数名 功能说明 void execute(void) 执行函数,程序的主体 Void child_process_handler(int sig) 处理后台运行进程函数,用于清除后台运行的子进程,以防其变成僵尸进程 void terminal_prompt(char*) 终端提示符函数 int read_command(char **,char **,char*) 读取命令函数,从用户输入中读取命令和参数,分别放入command[]和parameters[][]中,作为exec族函数执行。 int parsing(char **,int,struct parse_info *) 语法分析函数,主要处理后台执行,重定向,管道功能实现 int parse_info_init(struct parse_info *info) 初始化结构体struct parse_info *info int builtin_command(char *command, char **parameters) 内建命令函数,实现了exit、cd、help命令
算法设计
程序框架
#define TRUE 1
while(TRUE) {
type_prompt(); read_command(command,parameters);
if(fork()!=0) {
/* Parent code */
waitpid(-1,status,0);
} else {
/* Child code */
execve(command,parameters,0);
}
}
2.程序主体功能execute()函数的实现
#include myshell.h
void execute(void)
{
int status,i;
char *command = NULL;//命令
char **parameters;//参数
int ParaNum;//参数个数
char prompt[MAX_PROMPT];//提示
struct parse_info info;
pid_t ChdPid,ChdPid2;
parameters = malloc(sizeof(char *)*(MAXARG+2));
buffer = malloc(sizeof(char) * MAXLINE);
if(parameters == NULL || buffer == NULL)//内存分配失败
{
printf(mysh error:malloc failed.\n);
return;
}
if(signal(SIGCHLD,child_process_handler) == SIG_ERR)//父进程调用将SIGCHLD绑定到sig_handler()函数,这样fork出来的子进程在终止时会自动清理掉
perror(signal() error);
while(TRUE)
{
int pipe_fd[2],in_fd,out_fd;
terminal_prompt(prompt);//终端提示符函数
ParaNum = read_command(command,parameters,prompt);//读入命令
if(-1 == ParaNum)
c
您可能关注的文档
- 《人力资源管理》课本练习题部分参考答案.doc
- 《会计学基础》第03章在线测试.doc
- 《人口增长模式及地区分布》小节测试题.doc
- 《会计综合实训(手工)》课程标准.doc
- 《临时用电专项施工方案模板》.doc
- 《保护眼睛__预防近视》教学设计.doc
- 《信号与系统》实验教学大纲.doc
- 《信息安全问题分析与讨论》教学设计.doc
- 《作文》校本课程开发方案.doc
- 《信息的输入与输出》教学案.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 北师大版三年级下册数学全册教学设计(配2026年春改版教材).docx
- (2026年)跌倒坠床护理综合指南PPT课件.pptx VIP
- 工程设计应急响应方案(3篇).docx VIP
- 征信简版电子版PDF个人信用报告最新版2024年可编辑带水印模板.pdf VIP
- ntvf调试资料解读.doc VIP
- 电影《色.戒》的叙事伦理.doc VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 佳能EOS1500D基本使用说明书说明书.pdf VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 渣打银行(香港)有限公司.PDF VIP
原创力文档

文档评论(0)