-
大小: 43KB文件类型: .cpp金币: 1下载: 0 次发布日期: 2021-06-15
- 语言: C/C++
- 标签: Linux/Unix 文件系统 C
资源简介
用C编写的一个Unix/Linux文件系统
代码片段和文件信息
#include
#include
#include
#include
struct command //命令行
{
char com[10];
}cmd[22];
struct user //系统用户组
{
int userid;
char username[10];
char password[10];
int groupid;
}users[8];
struct block //块信息
{
int a; // 模拟盘块是否被占用
int n; // 下一组空闲的盘块的个数
int free[50]; // 下一组存放空闲盘块的地址
};
struct block_super //超级块 使用成组链接法来表示空闲块信息
{
int n; // 空闲的盘块的个数
int free[50]; // 存放进入栈中的空闲块
block memory[20449]; //全部块信息
}super_block;
struct node // i结点信息
{
int file_style; // i结点 文件类型 0代表文件类型是目录文件 1代表文件类型是普通文件
int file_length; // i结点 文件长度
int file_mode; // i结点 读写权限
int file_userid; // i结点 所属用户
int file_groupid; // i节点 所属组别
int file_address[100]; // i结点 文件的物理地址
int file_ilink;
} i_node[640];
struct dir // 目录项信息
{
char file_name[10]; // 文件名
int i_num; // 文件的结点号
char dir_name[10]; // 文件所在的目录
int is_slink;
char P_filename[10];
} root[640];
struct physical_block //定义存放文件的数据体
{
char p[512];
}physicalBlock[20449];
struct user_open_table //用户打开表项
{
int point[25]; //用户打开文件指针(指向系统打开表项)
}UserOpenTable[8];
struct system_open_table//系统打开表项
{
char filename[10]; //文件名称
int a_num; //指针,指向活动i结点
}SystemOpenTable[200];
struct active_node //活动i节点
{
struct node file_node; //结点具体信息
int i_count; //计数,打开该文件的用户数
int i_num; //指针,指向结点号
}ActiveNode[200];
user cur_user; //当前用户
char cur_dir[10]=“root“; //当前目录
int address_buffer[1000]; //文件地址缓冲区
int a_num; //当前活动节点位置
char buffer[512]; //写文件内容缓冲
//声明函数
//与文件系统初始化及运行相关的函数
void InitSystem(FILE *fp);
void InitDisks();
void InitUsers();
void InitTable();
void InitCommand();
void Run(FILE *fp);
//读写信息的函数
void ReadFromFile(FILE *fp);
void WriteToFile(FILE *fp);
void ReadUsers(FILE *fps);
void SaveUsers(FILE *fps);
//支持命令运行的函数
void InsertTable(char filename[] int i_num);
int SelectTable(char filename[]);
int IsPermit(int i_num char operation);
int AllotDisks(int length);
void RecoverDisks(int length);
//与命令有关的函数
int login();
void help();
void show_curdir();
void go_dir(char tmp[]);
void back_dir();
void create_dir(char tmp[]);
void del_dir(char tmp[]);
void create_file(char tmp[]);
void open_file(char tmp[]);
void read_file(char tmp[]);
void write_file(char tmp[]);
void close_file(char tmp[]);
void delete_file(char tmp[]);
void show_info();
void logout(FILE *fp);
int change_user(FILE *fpchar tmp[]);
void change_mode(char tmp[]);
void manage_user();
void h_link(char tmp[]);
void s_link(char tmp[]);
void rename(char tmp[]);
void cas_deldir(char tmp[]);
void main()
{
FILE *fp;
fp=fopen(“filesystem““rb“);//打开文件用二进制的方式读取
InitSystem(fp); //初始化系统
InitCommand(); //初始化命令
Run(fp); //运行
}
//初始化系统操作如果有系统文件就读取如果没有就通过调用各初始化函数初始化系统
void InitSystem(FILE *fp)
{
//如果文件存在读取如果文件不存在就初始化
if(fp==NULL)
{
InitDisks(); //首次生成时初始化磁盘
}
else
{
ReadFromF
- 上一篇:鱼眼矫正代码
- 下一篇:VC++ 中国象棋程序源代码
相关资源
- VC++ 中国象棋程序源代码
- C++ primer 第五版源程序含C++11扩展
- VC++ UDP穿透NATP2P原理及代码.rar
- 高斯消去法C++代码
- 计算机图形学 Cohen- Sutherland直线段裁
- MFC操作sqlite3需要的库文件
- 蚁群算法源代码 C++版
- 人工智能 A*算法 八数码问题 C++ 报告
- 光束法区域平差c++程序
- MFC的HttpClient的Get和Post方法
- 基于MFC的图形编辑器
- 众数问题c实现
- 一个基于DirectX的小游戏
- 超车模拟程序,可用于研究车流量
- STM32驱动MCP3421 C语言程序
- VC++ USB接口编程(代码)
- 轻量级C++实现的httpserver和httpclient
- TMS320f28035 eCAN 主机从机通信测试
- ListControl控件改变表头颜色
- 打砖块游戏
- C++程序设计原理与实践 原书第2版 基
- c语言读取bmp文件266437
- bwlabel之C++实现(二值图像八连通区域
- 基于C++MFC-RS485串口通信demo-完整版-代
- C++实现按键精灵-完整版-vs2013-可以跑
- 截图工具及源码
- Timer时钟.zip
- c++封装好的IP的获取和修改源码,通过
- c++笔试面试之网络和多线程
- c++笔试面试基础
评论
共有 条评论