操作系统实验一 命令解释程序的编写

一、目的和要求

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. 命令解释程序的原理:

命令解释程序的主要功能是:

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;
}


posted @ 2016-03-24 15:37  25江志彬  阅读(644)  评论(0编辑  收藏  举报