苏州科技学院
电子信息实验中心
实验报告
课 程 学 号 姓 名 班 级 专 业 指导教师 学年 / 学期
操作系统 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
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