操作系统命令解释

更新时间:2024-03-17 01:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

苏州科技学院

电子信息实验中心

实验报告

课 程 学 号 姓 名 班 级 专 业 指导教师 学年 / 学期

操作系统 13200126132 闫自立

软件1311

计算机科学与技术 张妮

2015 ~2016学年第一学期

实验一 命令解释程序设计

实验项目性质:设计性 计划学时:2 实 验 环 境:Redhat Linux 实验日期:2015 年 10月 16日 一、实验目的 1、通过本实验熟悉UNIX/LINUX操作系统及C语言。 2、熟悉系统调用的编程方法。 二、实验内容 利用C语言编写一个微型命令解释程序minishell.c,该程序可接收并解释以下命令: (1) dir 列出当前目录 (2) cop file1 file2 拷贝文件 (3) era filename 删除文件 (4) disp string 显示字符串 (5) end 结束,退出 要求: (1)检查命令的合法性,如果有错误,显示出错信息,等待重新输入; (2)命令前后有空格示为合法命令。 三、设计原理(或方案)及相关算法

1

四、结果分析(可根据需要附加页) 1.dir命令

2.cop命令

3.era命令

4.disp命令

5.end命令

2

五、源程序(可根据需要附加页)

3

#include #include #include #include using namespace std; int main() { char cmdl[80];

char lin[80];//linux最终命令

char *scwt[] = { \static int cmdnum = 5; //可用的命令数 char cmd[80]; char *parameter; unsigned int j,n;

while (true) { cout << \ printf(\ fgets(cmdl,30,stdin); //从标准输入读取数据 包括键盘

n = strcspn(cmdl, \//取命令命令部分 if (n>0 || strlen(cmdl)>0) {

strncpy(cmd, cmdl, n);//将命令部分拷贝的cmd字符数组 cmd[n] = '\\0';

for (j = 0; j

if (j == 0) {//是dir命令? cout << \最终解释后的命令是:\ system(\}

else if (j == 1){//cop parameter=strstr(cmdl, \ char *tem = \ unsigned int i = 0; unsigned int j1 = 0; for (; i < strlen(tem); i++){ lin[i] = *(tem + i); } for (; i < strlen(tem) + strlen(parameter); i++){ lin[i] = *(parameter + j1); j1++;

4

} lin[strlen(tem) + strlen(parameter)] = '\\0'; cout<<\最终解释后的命令是:\ system(lin); continue; }

else if (j == 2){//era 删除 parameter = strstr(cmdl, \ char *tem = \ unsigned int i = 0; unsigned int j1 = 0; for (; i < strlen(tem); i++){ lin[i] = *(tem + i); } for (; i < strlen(tem) + strlen(parameter); i++){ lin[i] = *(parameter + j1); j1++; } lin[strlen(tem) + strlen(parameter)] = '\\0'; cout << \最终解释后的命令是:\ system(lin); continue; }else if (j == 3){//disp 显示字符串 echo parameter = strstr(cmdl, \ char *tem = \ unsigned int i = 0; unsigned int j1 = 0; for (; i < strlen(tem); i++){ lin[i] = *(tem + i); } for (; i < strlen(tem) + strlen(parameter); i++){ lin[i] = *(parameter + j1); j1++; } lin[strlen(tem) + strlen(parameter)] = '\\0';

cout << \最终解释后的命令是:\ system(lin); continue; }

else if (j == 4){//end退出 cout << \最终解释后的命令是:\ system(lin); exit(0); continue;

5

}

}

printf(\命令错 } }

return 0;

6

本文来源:https://www.bwwdw.com/article/lch8.html

Top