毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

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

更新时间:2007-10-30:  来源:毕业论文

 

void del_file(char filename[])     //删除文件
{
 int i,j,k;
 for(i=0;i<640;i++)
 {
  
  if(strcmp(filename,root[i].file_name)==0)  
  { 
   k=root[i].i_num;
   for(j=0;j<i_node[k].file_length;j++)
   {
    physic[j]=i_node[k].file_address[j];
   }
   callback(i_node[k].file_length); //调用 回收函数
   for(j=0;j<100;j++)     //删除文件后要将文件属性和目录项的各个值恢复初值
   {
    i_node[k].file_address[j]=-1; //地址恢复初值
   }
   strcpy(root[i].file_name,"");  //文件名恢复初值
   root[i].i_num=-1;     //目录项的I结点信息恢复初值
   strcpy(root[i].dir_name,"");  //目录项的文件目录信息恢复初值
   i_node[k].file_length=-1;   //文件长度恢复
   i_node[k].file_style=-1;   //文件类型恢复初值
   break;
  } 
 }
 if(i==640)
 {
  printf("不存在这个文件\n");
 } 
}

void del_dir(char filename[])     //删除目录   需要判断目录下时候为空,不为空就不删除
{
 int i,j,k;
 for(i=0;i<640;i++)       //还要加条件判断要删除的目录是不是当前目录
 {
  k=root[i].i_num;      //找到目录名字
  if( strcmp(root[i].file_name,filename)==0 && strcmp(cur_dir,filename)!=0 && (i_node[k].file_style)==0 )
  {
   
   for(j=0;j<640;j++)
   {
    if(strcmp(filename,root[j].dir_name)==0)
    {
     printf("目录不为空不能直接删除\n");
      break;
    }
   }
   if(j==640)
   {
    del_file(filename);
    break;
   }
   
   break;
  }
 }
 if(i==640)
 {
  printf("这个不是目录文件 或者不存在这个目录,或者你要删除的是当前目录\n");
 } 
 
}

void display_curdir()         //显示当前目录下的文件列表
{
 int i,k;
 printf("\t\t文件名字  文件类型  文件长度  所属目录\n");
 for(i=0;i<640;i++)
 {
  if(strcmp(cur_dir,root[i].dir_name)==0)   //查询文件中 所在目录信息和当前目录信息相同的数据
  {
   k=root[i].i_num;
   printf("\t\t  %s\t",root[i].file_name);  //文件名
   printf("\t%d\t",i_node[k].file_style);  //文件的类型
   printf("%d\t",i_node[k].file_length);  //文件的长度
   printf("%s\n",root[i].dir_name);   //文件所在的目录
  }
 }
}

void display_dir(char filename[])     //进入指定的目录 
{
 int i,k;  
 for(i=0;i<640;i++)
 {
  k=root[i].i_num;       //判断文件类型是不是目录类型
  if((strcmp(filename,root[i].file_name)==0) && (i_node[k].file_style==0))    
  {
   strcpy(cur_dir,filename);    //将要进入的指定目录设置为当前目录  赋值不要反了strcpy(目的,源)
   break;
  }
 }
 if(i==640)
  {
   printf("没有这个目录\n");
  }
}
void open_file(char filename[])        //打开文件
{
 int i,j,k;
 printf("\t\t文件名字  文件类型  文件长度  所属目录\n");
 for(i=0;i<640;i++)
 {
  k=root[i].i_num;
  if(strcmp(filename,root[i].file_name)==0 && (i_node[k].file_style==1))
  {
   printf("\t\t  %s\t",root[i].file_name);   //文件名
   printf("\t%d\t",i_node[k].file_style);   //文件的类型
   printf("%d\t",i_node[k].file_length);   //文件的长度
   printf("%s\n",root[i].dir_name);    //文件所在的目录
   printf("\t\t文件占用的物理地址\n");
   for(j=0;j<i_node[k].file_length;j++)   //显示物理地址
   {  
    printf("%d  ",i_node[k].file_address[j]); //文件具体占用的盘块号
   }
   printf("\n");
   break;
  } 
 }
 if(i==640)
  {
   printf("没有这个文件 或者这个文件不是正规文件\n");
  }
}

void back_dir()         //返回上一级目录
{
 int  i,k;
 for(i=0;i<640;i++)       //查询和当前目录名相同的目录文件名
 {
  k=root[i].i_num;
  if(strcmp(cur_dir,root[i].file_name)==0 && (i_node[k].file_style==0)) 
  {
   strcpy(cur_dir,root[i].dir_name); //将查询到的目录文件名  所在的目录赋值给当前目录
  }
 }
}
void display_sys()        //显示系统信息(磁盘使用情况)
{
 int i,m,k=0;
 for(i=0;i<20449;i++)
 {
  if(memory[i].a==0)
   k++;
 }
 m=20449-k;
 printf("空闲的盘块数是:\t");
 printf("%d\n",k);
 printf("使用的盘块数是:\t");
 printf("%d\n",m);
}

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

操作系统课程设计-成组链接模拟unix文件系统 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。