-
大小: 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++ 中国象棋程序源代码
相关资源
- C++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- C语言编程常见问题解答.pdf
- GD32通过规则组寄存器 DMA获取多组AD
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
川公网安备 51152502000135号
评论
共有 条评论