资源简介
1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。
2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求:
(1) 盘块大小1k
(2) 空闲盘块的管理:Linux位图法
(3) 结构:超级块, i结点区, 根目录区
3. 该simdisk管理程序的功能要求如下:
(1) info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。
(2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。
(3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。
(4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。
(5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。
(6) newfile …: 建立文件。
(7) cat …: 打开文件。
(8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令:
simdisk copy D:\data\sample\test.txt /test/data
或者:simdisk copy D:sample\test.txt /test/data
(9) del …: 删除文件:删除指定文件,不存在时给出出错信息。
(10) check: 检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。
4. 程序的总体流程为:
(1) 初始化文件目录;
(2) 输出提示符,等待接受命令,分析键入的命令;
(3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。

代码片段和文件信息
#include “head.h“
#include “blockinodesuperblock.h“
#include “initial.h“
#include “userop.h“
#include “file.h“
#include “dir.h“
#include “command.h“
#include “chsome.h“
/////////////////////////////////////////////////////////////////////////////////////////
void main()
{
control.open(“control.txt“ios::in | ios::out );
int i;
control>>i;
control.close();
if(i!=0)//不为0就初始化
{
initial();
}
control.open(“control.txt“ios::in | ios::out );
control.seekp(0);
control<<0;//默认是上次基础上继续下去不用再初始化
control.close();
strcpy(curname“root“);//当前目录文件名为root
road[0]=0;//当前目录路径(存放从根目录到这里的结点号)
num=1;//最后位road[num-1]为当前目录文件i结点号
cout<<“请登陆系统\n“;
while( !login() )//登陆为止
cout<<“wrong !!!\n“;
cout<<“ login success“< cout<<“******Welcome “<
readsuper();
getcommand();//命令解析函数
writesuper();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 51400 2009-05-30 12:59 文件系统\debug\disk.txt
文件 102400 2009-02-17 11:52 文件系统\debug\OS5.exe
文件 442576 2009-02-17 11:52 文件系统\debug\OS5.ilk
文件 486400 2009-02-17 11:52 文件系统\debug\OS5.pdb
文件 54 2009-05-30 12:59 文件系统\debug\user.txt
文件 7644 2009-02-17 11:50 文件系统\OS5\blockinodesuperblock.h
文件 7194 2009-02-17 11:52 文件系统\OS5\chsome.h
文件 5321 2009-02-17 11:52 文件系统\OS5\command.h
文件 12191 2009-02-17 11:52 文件系统\OS5\dir.h
文件 51400 2009-02-17 11:52 文件系统\OS5\disk.txt
文件 8210 2009-02-17 11:51 文件系统\OS5\file.h
文件 4412 2009-02-16 22:50 文件系统\OS5\head.h
文件 2587 2009-02-17 11:51 文件系统\OS5\initial.h
文件 989 2009-02-17 11:53 文件系统\OS5\main.cpp
文件 4173 2009-02-16 22:49 文件系统\OS5\OS5.vcproj
文件 1411 2009-02-17 11:53 文件系统\OS5\OS5.vcproj.Dark-PC.Allen.user
文件 54 2009-02-17 11:52 文件系统\OS5\user.txt
文件 1623 2009-02-17 11:51 文件系统\OS5\userop.h
目录 0 2009-05-30 12:59 文件系统\debug
目录 0 2009-05-30 13:00 文件系统\OS5
目录 0 2009-05-30 13:00 文件系统
----------- --------- ---------- ----- ----
1190039 21
- 上一篇:tiny小型编译器代码及实现
- 下一篇:C++编写S-G滤波
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- LINUX下命令行界面的C语言细胞游戏
- 尚观培训linux许巍老师关于c语言的课
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- 《Linux程序设计》第四版pdf高清电子版
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- linux 0.11内核代码
- linux ac108多麦方案驱动(ac108.c)
- 共享内存 读写
- 简易web服务器的设计与实现
- 《LINUX C编程从初学到精通》光盘源码
评论
共有 条评论