操作系统实验文件管理 C++代码#include #include #include #include #include using namespace std; #define BLKSIZE 512 #define BLKNUM 512 #define INODESIZE 32 #define INODENUM 32 #define FILENUM 8 //用户 typedef struct { // 数据块的大小 // 数据块的块数 // i 节点的大小 // i 节点的数目 // 打开文件表的数目 char user_name[10]; // 用户名 char password[10]; // 密码 } User; //i 节点 typedef struct { short inum; // 文件 i 节点号 char file_name[10]; // 文件名 char type; // 文件类型 char user_name[10]; // 文件所有者 short iparent; // 父目录的 i 节点号 short length; // 文件长度 short address[2]; // 存放文件的地址 } Inode; //打开文件表 typedef struct { short inum; // i 节点号 char file_name[10]; // 文件名 short mode; // 读写模式(1:read, 2:write, // 3:read and write) } File_table; // 申明函数 void login(void); void init(void); int analyse(char *); void save_inode(int); int get_blknum(void); void read_blk(int); void write_blk(int); void release_blk(int); void pathset(); void del(int); // 用户命令处理函数 void help(void); void cd(void); void dir(void); void mkdir(void); void creat(void); void open(void); void read(void); void write(void); void close(void); void delet(void); void logout(void); void command(void); void quit(); //main.cpp 文件 //#include \ //定义全局变量 char choice; int argc; // 用户命令的参数个数 char *argv[5]; // 用户命令的参数 int inum_cur; // 当前目录 char temp[2*BLKSIZE]; // 缓冲区 User user; // 当前的用户 char bitmap[BLKNUM]; // 位图数组 Inode inode_array[INODENUM]; // i 节点数组 File_table file_array[FILENUM]; // 打开文件表数组 char image_name[10] = \// 文件系统名称 FILE *fp; // 打开文件指针 //创建映像 hd,并将所有用户和文件清除 void format(void) { int i; Inode inode; printf(\ printf(\ printf(\ scanf(\ getchar(); if((choice == 'y') || (choice == 'Y')) { if((fp=fopen(image_name, \ { printf(\ exit(-1); } for(i = 0; i