2008iis网站建设,设计网站公司都选亿企邦,seo百度关键字优化,常州模板网站建设企业构造一个自己的 mini 操作系统 任务描述
请实现如下功能#xff1a; 1.写一个命令解释器程序 mysh.c #xff0c;其功能是接收用户输入的命令并给出反馈。要求该程序既支持内部命令 cd、sync、exit #xff1b;也支持外部命令#xff0c;即可以接收 cat、ls 等命令#x…构造一个自己的 mini 操作系统 任务描述
请实现如下功能 1.写一个命令解释器程序 mysh.c 其功能是接收用户输入的命令并给出反馈。要求该程序既支持内部命令 cd、sync、exit 也支持外部命令即可以接收 cat、ls 等命令然后执行相应的可执行程序。要求首先在 Ubuntu 中测试该程序然后用版本 0 内核启动 bochs 虚拟机在该虚拟机中编译运行该程序画面应如下图所示 2.在 bochs 虚拟机的 /etc/rc 文件中增加一组测试命令如下图所示 相关知识
为了完成本关任务你需要掌握 1.命令解释器程序的一般结构是怎样的 2.如何获取当前目录的路径名 3.如何实现内部命令 cd 和 sync 4.如何执行一个可执行文件 5.如何将文件放入 bochs 虚拟机 6.在 bochs 虚拟机中如何编辑文件。
实验准备
mysh.c 存放在/data/workspace/myshixun/exp3中修改之后请将文件保存在同一位置否则评测无法通过。
实验过程及答案
实验过程 先通过vscode编辑mysh.c #includeunistd.h
#includestdio.h
#includestdlib.h
#includestring.h
void main()
{int size 20;int pid;char pos[size];char command[size];while(1){getcwd(pos,size);printf(%s$\n,pos);scanf(%s,command);if(!strcmp(command,cd)){char path[size];scanf(%s,path);chdir(path);}else if(!strcmp(command,sync)){sync();}else if(!strcmp(command,exit)){exit(0);}else if(!strcmp(command,ls)){char ls_command[size];strcpy(ls_command,ls );strcat(ls_command,pos);// sprinf(ls_command,ls %s, pos);system(ls);}else if(!strcmp(command,cat)){char filename[size];char cat_command[size];scanf(%s,filename);strcpy(cat_command,cat );if(filename[0] ! /){strcat(cat_command,pos);strcat(cat_command,/);}strcat(cat_command,filename);// sprintf(cat_command,cat %s/%s,pos, filename);system(cat_command);}}
}把这份代码保存到os/linux-0.11-lab/b下 代码搞定把这段代码放进内核编译