MinDos--操作系统
MinDos--操作系统
总结 : 本次实现的是功能是为
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。 添加了system();实现window 命令操作
添加了 参数can 用于判断命令是否带参数 不足 :带参数的命令 还不能实现 system 操作
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define Max 500
struct Cmd{
char cmd[];
char function[];
cahr can;
int post;
};
int count=;
void Init(struct Cmd cm[Max])
{
FILE *fp;
if((fp=fopen("cmd.txt","a+"))==NULL)
{
printf("File open error!\n");
exit();
}
while(!feof(fp)&&fgetc(fp)!=EOF)
{
fseek(fp,-1L,SEEK_CUR);
fscanf(fp,"%s%s%c%d",&cm[count].cmd,&cm[count].function,&cm[count].can,&cm[count].post);
count++;
}
if(fclose(fp))
{
printf("Can not close the file!\n");
exit();
}
}
void display(struct Cmd cm[Max])
{
for(int i=;i<count;i++)
{
printf("%-10s%s\n",strupr(cm[i].cmd),cm[i].function);
strlwr(cm[i].cmd);
}
}
void process(struct Cmd cm[Max])
{
char str[];
printf("Microsoft Windows XP [版本 5.1.2600]\n");
printf("(C) 版权所有 1985-2001 Microsoft Corp.\n");
while(strcmp(str,"quit")!=){
printf("\nC:\\Documents and Settings\\hskd>");
scanf("%s",str);
strlwr(str);
bool flag=false;
if(strcmp(str,"help")==)
{
printf("有关某个命令的详细信息,请键入 HELP 命令名\n");
display(cm);
flag=true;
}else{
for(int i=;i<count;i++)
{
if(strcmp(str,cm[i].cmd)==)
{
if(cm[i].post==)
printf("'%s' 内部命令输入正确!\n该命令作用是:%s\n",str,cm[i].function);
else
printf("'%s' 外部命令输入正确!\n该命令作用是:%s\n",str,cm[i].function);
//实现windwins 命令
system(str);
//判断是否带参数
if(cm[i].can=='t')
printf("带参数命令\n");
else if(cm[i].can=='f')
printf("不带参数命令");
else
printf("可带参数命令");
flag=true;
break;
}
}
if(!flag){
if(strcmp(str,"quit")!=)
printf("'%s' 不是内部或外部命令,也不是可运行的程序\n或批处理文件。\n",str);
}
}
}
printf("\n程序结束!\n\n");
}
int main()
{
struct Cmd cm[Max];
Init(cm);
process(cm);
return ;
}
MinDos--操作系统的更多相关文章
- 操作系统篇-调用门与特权级(CPL、DPL和RPL)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...
- 操作系统篇-分段机制与GDT|LDT
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...
- 操作系统篇-hello world(免系统运行程序)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...
- Linux实战教学笔记03:操作系统发展历程及系统版本选择
标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
- ucos实时操作系统学习笔记——任务间通信(队列)
ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的 ...
- ucos实时操作系统学习笔记——任务间通信(信号量)
ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代 ...
- ucos实时操作系统学习笔记——内核结构和任务创建
对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...
- ucos实时操作系统学习笔记——操作系统在STM32的移植
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...
- c# 检测操作系统版本
我们通过System.Environment.OSVersion.Version获得操作系统的版本号,然后再根据版本号进行判断操作系统是什么版本 Version 类的属性 Operating syst ...
随机推荐
- BZOJ3295: [Cqoi2011]动态逆序对(树状数组套主席树)
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7465 Solved: 2662[Submit][Sta ...
- 2018-2019-2 《网络对抗技术》Exp3免杀原理与实践 20165222
1. 实践内容 1.1 正确使用msf编码器 使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ...
- 《DSP using MATLAB》Problem 2.5
2.代码: %% ------------------------------------------------------------------------ %% Output Info abo ...
- opencrud graphql 数据操作指南
opencrud 是社区团队提出,同时prisma框架就是按照这个标准设计的,里面包含了对于graphql 数据 操作的最佳实践,目前还在完善中,但是设计以及指南覆盖的功能还是比较全的,如果用过 pr ...
- Javascript模块化编程require.js的用法
JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...
- 华硕主板P8H61(P8H61-M_LX3_PLUS_R2.0)成功禁用USB口
公司大批这个型号的主板,在百度上搜索了一下,其中有一篇帖子说华硕客服说这个型号的USB控制XX是集成成南桥上面没法禁止. 经过研究发现官网上的0802版可以支持禁止usb,并且可以根据需要为每一个US ...
- 代码规范 for node.js with 'npm-coding-style'
npm-coding-style npm's "funny" coding style Description npm's coding style is a bit unconv ...
- 使用纯生js实现图片轮换
效果图预览. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- cowboy添加验证码
参考的http://beebole.com/blog/erlang/how-to-implement-captcha-in-erlang-web-application/,移到cowboy,修改了下: ...
- POJ 2777-题解
一.题意 给你一排N个格子,M种颜色,P个操作.有两种操作:(1)C A B D:把[A, B]区间内的所有格子涂成颜色D.(2)P A B:输出[A, B]区间内的颜色的种类数.注意,初始颜色为1. ...