操作系统实验一 命令解释程序的编写
一、目的和要求
1. 实验目的
(1)掌握命令解释程序的原理;
(2)掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
2.实验要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
二、实验内容
根据教师指定的实验课题,完成设计、编码、测试工作。
三、实验环境
1.PC微机
2.Windows 操作系统
3.C/C++程序开发集成环境
四、实验原理及核心算法参考程序段
- 命令解释程序的原理:
命令解释程序的主要功能是:
1) 接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息。
#include<stdio.h> #include<stdlib.h> #include<string.h> #define head0 "Microsoft Windows10 [版本 5.1.2600]" #define head1 "<c>版权所有 1985-2001 Microsoft Corp." #define head2 "C:\\Documents and Settings\\Administrator>" struct CMD{ char command[10]; int type; char function[50]; }; typedef struct node{ struct CMD data; struct node *next; }cmd; void search(cmd *l){ cmd *p; p=l; char b[10]; scanf("%s",b); getchar(); while(p->next!=NULL){ p=p->next; if(stricmp(b,p->data.command)==0){ system(b); printf("\n"); goto vc1; } } printf("\'%s\'不是内部或外部命令,也不是可运行的程序\n或批处理文件。\n",b); vc1:; } int main(){ FILE *fp1; cmd *p,*q,*a; q=(cmd *)malloc(sizeof(cmd)); q->next=NULL; p=q; fp1=fopen("cmd功能.txt","r"); if(fp1==NULL){ printf("不能打开文件"); return 0; } while(!feof(fp1)){ a=(cmd *)malloc(sizeof(cmd)); p->next=a; p=a; p->next=NULL; fscanf(fp1,"%s %d %s",&p->data.command,&p->data.type,&p->data.function); } fclose(fp1); printf(head0"\n"); printf(head1"\n\n"); printf(head2); vc2:search(q); printf(head2); goto vc2; }