内容发布更新时间 : 2025/11/4 16:24:49星期一 下面是文章的全部内容请认真阅读。
操作系统实验报告
  dir_buf[i].name=\ }  for(int i=0;i /*此函数用于装载虚拟硬盘的数据*/ bool install(void){                                  /**函数声明**/  inode * getInode(unsigned int);//获取指定inode号的inode单元 bool getDataBlock(unsigned int);//获取指定数据块号下的目录或文件  int i;  cout<<\ f_stream = fopen (diskName, \只读方式打开硬盘模拟文件 if(f_stream==NULL) {   }  cout<<\文件打开失败\return 0;   //读超级块  fseek(f_stream,BLOCK_SIZE,SEEK_SET);  fread(&superBlock,sizeof(struct super_block),1,f_stream); //////  cout<<\加载超级块:\inode_temp=new inode; if(!inode_temp) {  cout<<\内存分配失败!\ return 0; }  cur_inode=new inode; if(!cur_inode) {  cout<<\内存分配失败!\ return 0;  21  操作系统实验报告                                                 }  //读取inode 位示图  fseek(f_stream,BLOCK_SIZE*2,SEEK_SET); fread(di_bitmap,BLOCK_SIZE,1,f_stream);  cout<<\加载inode位示图:\//读取block 位示图  fseek(f_stream,BLOCK_SIZE*3,SEEK_SET); fread(bk_bitmap,BLOCK_SIZE,1,f_stream);  cout<<\加载block位示图:\//读取账户信息的inode inode_temp=getInode(1); if(inode_temp==NULL) {   cout<<\加载账户信息失败!\ return false; }  //changeinode();//交换指针后 cur_inode 指向当前目录的 inode //读取账户信息  cout<<\账户信息块号:\ fseek(f_stream,DATA_START+BLOCK_SIZE*inode_temp->di_block,SEEK_SET); fread(account,BLOCK_SIZE,1,f_stream);  cout<<\加载账户信息:\for(i=0;i cur_inode=getInode(0);//读取主目录的inode  当前inode指向主目录的inode if(cur_inode->di_mode!=0) {  cout<<\读取主目录失败,请重新格式化!\} else  22  操作系统实验报告        }   {   }  //将主目录读入cur_dir数组  getDataBlock(cur_inode->di_block);  return true;  /*此函数用于用户登陆*/ void login(){   }  /*此函数用于显示功能菜单*/ void showMenu(void){             }  cout<<\显示命令帮助\\n\ cout<<\文件名]\\t创建文本文件\\n\cout<<\目录名]\\t创建文件夹\\n\cout<<\文件名]\\t读取一个文件\\n\cout<<\文件名]\\t编辑一个文件\\n\ cout<<\目录名]\\t进入子目录或者上级目录\\n\cout<<\文件名]\\t显示该文件的属性\\n\cout<<\文件名]\\t删除文件\\n\ cout<<\显示当前目录下的文件和文件夹\\n\cout<<\文件名]\\t重命名\\n\cout<<\注销\\n\cout<<\退出系统\\n\ /**此函数用于用户选择功能并执行**/ bool onAction(){  void showMenu();  void showDir();  void logout();                void createFile(string str);//创建一个文件 void createDir(string str); void editFile(string str); void visit(string str); void attrib(string str);  void Delete(string str);//删除一个文件 void rename(string str);  bool read(string filename);//此函数用于读取一个文件   inode * getInode(unsigned int); fflush(stdin);  23  操作系统实验报告                                                   while(true){  fflush(stdin);  char str[20];//用户输入的命令  char name[20];//文件或者目录名  string namestr;    cin>>str;  // cout<<\//                                   cout<<\测试:\if(strcmp(str,\ fclose(f_stream);  return false; }  else if(strcmp(str,\ showDir();//显示当前文件夹下的所有文件和文件夹 }  else if(strcmp(str,\ showMenu(); //显示功能菜单 }  else if(strcmp(str,\ logout();//注销 }  else if(strcmp(str,\ cin>>namestr;  createFile(namestr); }  else if(strcmp(str,\ cin>>namestr;  createDir(namestr);//创建文件夹   }  else if(strcmp(str,\ cin>>name;  read(name);//读文件   }  else if(strcmp(str,\ cin>>name;  editFile(name);//编辑文件   }  else if(strcmp(str,\ 24  操作系统实验报告                                                       cin>>name;   visit(name);//目录访问   }  else if(strcmp(str,\ cin>>name;  attrib(name);//显示该文件的属性   }  else if(strcmp(str,\ cin>>name;  Delete(name);//删除文件   }  else if(strcmp(str,\ cin>>name;  rename(name);//重命名 }  /**测试**/  else if(strcmp(str,\ int i;  cin>>i;  getInode(i);//查看inode }  /*****/    else cout< /**此函数用于显示当前目录下所有文件和文件夹信息**/ void showDir(void){  cout<<\}  /**此函数用于注销用户**/ void logout(void){  cout<<\}   /**此函数用于创建文件夹**/   void closeFile(string str){  cout<<\}  /**此函数用于编辑文件**/ void editFile(string str){  25