操作系统命令解释_第1页
操作系统命令解释_第2页
操作系统命令解释_第3页
操作系统命令解释_第4页
操作系统命令解释_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、苏州科技学院 电子信息实验中心实验报告课程操作系统学名闫自立班级 软件1311专业计算机科学与技术指导教师 张妮学年 / 学期2015 2016学年第一学期5实验一 命令解释程序设计实验项目性质:设计性计划学时:2实 验 环 境:Redhat Linux 实验日期:2015 年10月16日一、实验目的1、通过本实验熟悉UNIX/LINUX操作系统及C语言。2、熟悉系统调用的编程方法。二、实验内容利用C语言编写一个微型命令解释程序minishell.c,该程序可接收并解释以下命令:(1) dir列出当前目录(2) copfile1file2拷贝文件(3)erafilen

2、ame删除文件(4) disp string显示字符串(5)end结束,退出要求:(1)检查命令的合法性,如果有错误,显示出错信息,等待重新输入;(2)命令前后有空格示为合法命令。三、设计原理(或方案)及相关算法四、结果分析(可根据需要附加页)1. dir命令2. cop命令3.era命令4. disp命令5. end命令五、源程序(可根据需要附加页)#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int

3、main()char cmdl80;char lin80;/linux最终命令char *scwt = "dir", "cop", "era", "disp", "end" ;static int cmdnum = 5;/可用的命令数char cmd80; char *parameter;unsigned int j,n;while (true)cout << "notice:command must have space in the end!n"printf(

4、"Please input command: ");fgets(cmdl,30,stdin);/从标准输入读取数据 包括键盘n = strcspn(cmdl, " ");/取命令命令部分if (n>0 | strlen(cmdl)>0)strncpy(cmd, cmdl, n);/将命令部分拷贝的cmd字符数组cmdn = '0'for (j = 0; j<cmdnum; j+)if (strcmp(cmd, scwtj) = 0)break;if (j = 0)/是dir命令?cout << "d

5、ir最终解释后的命令是:" <<"ls -a" << endl;system("ls -a");else if (j = 1)/copparameter=strstr(cmdl, " ");char *tem = "cp "unsigned int i = 0;unsigned int j1 = 0;for (; i < strlen(tem); i+)lini = *(tem + i);for (; i < strlen(tem) + strlen(parameter

6、); i+)lini = *(parameter + j1);j1+;linstrlen(tem) + strlen(parameter) = '0'cout<<"cop最终解释后的命令是:" <<lin<<endl;system(lin);continue;else if (j = 2)/era 删除 parameter = strstr(cmdl, " ");char *tem = "rm -f "unsigned int i = 0;unsigned int j1 = 0;fo

7、r (; i < strlen(tem); i+)lini = *(tem + i);for (; i < strlen(tem) + strlen(parameter); i+)lini = *(parameter + j1);j1+;linstrlen(tem) + strlen(parameter) = '0'cout << "era最终解释后的命令是:" << lin << endl;system(lin);continue;else if (j = 3)/disp 显示字符串 echoparamete

8、r = strstr(cmdl, " ");char *tem = "echo "unsigned int i = 0;unsigned int j1 = 0;for (; i < strlen(tem); i+)lini = *(tem + i);for (; i < strlen(tem) + strlen(parameter); i+)lini = *(parameter + j1);j1+;linstrlen(tem) + strlen(parameter) = '0'cout << "disp最终解释后的命令是:" << lin << endl;system(lin);continue;else if (j = 4)/end退出cout << "end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论