操作系统课程设计-成组链接模拟unix文件系统 第4页

 

void help()          //显示帮助信息
{
 printf("注意:创建的文件长度 < 100\n\n"); //说明文件
 printf("0.初始化-------------------------format\n");
 printf("1.查看当前目录文件列表-----------dir\n");
 printf("2.查看文件-----------------------cat-----(cat + 空格 + 文件名)  \n");
 printf("3.查看系统信息-------------------ls    \n");
 printf("4.创建目录-----------------------md------(md  + 空格 + 目录名)  \n");
 printf("5.创建文件-----------------------vi------(vi  + 空格 + 文件名 + 文件长度)  \n");
 printf("6.删除文件-----------------------del-----(del + 空格 + 文件名) \n");
 printf("7.删除目录-----------------------deldir--(del + 空格 + 目录名)\n");
 printf("8.进入当前目录下的指定目录-------cd--------(cd + 空格 + 目录名)\n");
 printf("9.返回上一级目录-----------------cd..  \n");
 printf("10.显示帮助命令-----------------help  \n");
 printf("11.退出文件模拟------------------quit  \n");
}
void main()          //主函数
{
 char tmp[10],com[10],tmp1[10],k;
 struct command tmp2[10];
 int i, j=0,p,len=0;
 FILE *fp;
 help();
 strcpy(cmd[0].com,"format");    //将各个命令存进命令表
 strcpy(cmd[1].com,"dir");
 strcpy(cmd[2].com,"cat");
 strcpy(cmd[3].com,"ls");
 strcpy(cmd[4].com,"md");
 strcpy(cmd[5].com,"vi");
 strcpy(cmd[6].com,"del");
 strcpy(cmd[7].com,"deldir");
 strcpy(cmd[8].com,"cd");
 strcpy(cmd[9].com,"cd..");
 strcpy(cmd[10].com,"help");
 strcpy(cmd[11].com,"quit");
 if((fp=fopen("system","rb"))==NULL)   //判断系统文件是否存在
 {
  printf("can not open file\n");
  printf("format the disk  Y / N \n");
  scanf("%c",&k);
  if(k=='y')
   format(); 
 }
 else
 {
  read_file(fp);       //读取系统文件的内容
 }
 
 while(1)
 {
  j=0;         //必须重新给恢复0否则出错
  strcpy(tmp,cur_dir);
  while(strcmp(tmp,"root")!=0)
  {
   for(i=0;i<640;i++)
   {
    p=root[i].i_num;
    if(strcmp(tmp,root[i].file_name)==0 && (i_node[p].file_style==0))
    {
     strcpy(tmp2[j].com,tmp);
     j++;
     strcpy(tmp,root[i].dir_name);
    }
   }
  }
  
  strcpy(tmp2[j].com,tmp);
  for(i=j;i>=0;i--)
  {
   printf("%s/",tmp2[i].com); 
  }

  scanf("%s",com);       //输入命令并且查找命令的相关操作
  for(i=0;i<12;i++)      
  {
   if(strcmp(com,cmd[i].com)==0)
   {
    p=i;
    break;
   }
  }
  if(i==12)         //如果没有这个语句以后输入的命令都和第一次输入的效果一样
  {
   p=13; //随便的一个值
  }
  switch(p)
  {
  case 0: format();       //初始化
    break;
  case 1: display_curdir();     //查看当前目录下的文件列表      
    break;
  case 2: scanf("%s",tmp);     //查看文件 
    open_file(tmp);  
    break;
  case 3: display_sys();      //查看系统信息
    break;
  case 4:scanf("%s",tmp);      //创建目录    
    create_dir(tmp);  
    break;
  case 5: scanf("%s",tmp);     //创建文件 
    scanf("%d",&len);
    create_file(tmp,len);  
    break;
  case 6: scanf("%s",tmp);     //删除文件
    for(i=0;i<640;i++)     //判断文件是不是正规文件
    {
     j=root[i].i_num;
     if(strcmp(tmp,root[i].file_name)==0 && (i_node[j].file_style)==1)
     {
      del_file(tmp);
      break;
     }
    }
    if(i==640)
    {
    printf("这个不是正规文件文件\n");
    }     
    break;
  case 7: 
    scanf("%s",tmp);     //删除目录
    del_dir(tmp);   
    break;
  case 8: scanf("%s",tmp1);     //进入当前目录下的指定目录   相当于进入目录  cd  +  目录名
    display_dir(tmp1);
    break;
  case 9: back_dir();       //返回上一级目录
    break;
  case 10:help();
    break;
  case 11:write_file(fp);      //将磁盘利用信息写进系统文件,退出
    return;
  default:printf("SORRY,没有这个命令\n");
    break;
  }
 }
}

上一页  [1] [2] [3] [4] 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有