• 大小: 1.36MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-05
  • 语言: 其他
  • 标签:

资源简介

为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。

资源截图

代码片段和文件信息

#include                          
#include
#include
#include
#include
#include “define.h“

/***************************************************************************************************************
         创建文件系统
****************************************************************************************************************/
void create_file_system()                                     
{
fp=fopen(file_system_name“wb+“);              //以读写方式打开,如果存在,则覆盖原来信息,
if(fp==NULL)                                   //否则创建该文件    
{
cout<<“Create file system error!\n“< exit(1);
}
                                                   //申请空间
int total=sizeof(int)*(DIR_NUM+FILE_NUM+BLOCK_NUM+3)+sizeof(struct dir_node)*DIR_NUM+sizeof(struct file_node)*FILE_NUM+BLOCK_SIZE*BLOCK_NUM;
for(long len=0;len fputc(0fp);

fseek(fp0SEEK_SET);                          //写超级块信息
used_dir=1;
fwrite(&used_dirsizeof(int)1fp);
used_file=0;
used_block=0;
fwrite(&used_filesizeof(int)2fp);
dir_flag[0]=1;
fwrite(&dir_flag[0]sizeof(int)1fp);         //标志对应目录节点、文件节点的使用情况
fwrite(&dir_flag[1]sizeof(int)DIR_NUM+FILE_NUM+BLOCK_NUM-1fp);

strcpy(dir[0].dir_name“A:“);                  //写根目录信息
dir[0].dir_count=0;
dir[0].file_count=0;
dir[0].parent=-1;
GetLocalTime(&dir[0].ctime);                   //获得当前时间
fwrite(&dir[0]sizeof(struct dir_node)1fp);
                                                   
for(int i=0;i {
al_dir[i]=0;
al_dflag[i]=0;
dir[i].dir_count=0;
dir[i].file_count=0;
}
for(i=0;i {
al_file[i]=0;
al_fflag[i]=0;
open_files[i]=0;
}
for(i=0;i al_bflag[i]=0;

for(i=0;i buffer[i].flag=0;

fflush(fp);
fclose(fp);
}
/***************************************************************************************************************
搜索目录或文件,成功则返回该文件或目录的索引失败则返回-1,
type用来区分要搜索的是文件还是目录0表示目录,1表示文件,
index用来指定找到的文件或目录在父目录下的位置
****************************************************************************************************************/
int search(int parentchar *nameint typeint &index) 
{                                                      
struct dir_node *p=&dir[parent];               
int itemp;                                    
if(type==0)    //表示目录                                                
for(i=0;idir_count;i++)
{
temp=p->child_dir[i];
if(strcmp(namedir[temp].dir_name)==0)// 字符串相等时 
{
index=i;
return temp;
}
}
else
for(i=0;ifile_count;i++)//表示找文件 
{
temp=p->child_file[i];
if(strcmp(namefile[temp].file_name)==0)
{
index=i;
return temp;
}
}

return -1;
}
/**********************************************************************************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     237620  2011-06-28 23:25  linux\Debug\os.exe

     文件     291284  2011-06-28 23:25  linux\Debug\os.ilk

     文件      71619  2011-06-28 23:25  linux\Debug\os.obj

     文件    3732436  2011-06-28 23:24  linux\Debug\os.pch

     文件     599040  2011-06-28 23:25  linux\Debug\os.pdb

     文件     140288  2011-06-28 23:28  linux\Debug\vc60.idb

     文件      86016  2011-06-28 23:25  linux\Debug\vc60.pdb

     文件       4282  2011-02-16 18:01  linux\define.h

     文件      34664  2011-06-28 23:25  linux\os.cpp

     文件       3414  2011-06-28 23:30  linux\os.dsp

     文件        512  2011-06-28 23:30  linux\os.dsw

     文件      41984  2011-06-28 23:30  linux\os.ncb

     文件      48640  2011-06-28 23:30  linux\os.opt

     文件       1096  2011-06-28 23:25  linux\os.plg

     文件    2337792  2009-09-06 20:32  linux\操作系统课程设计-模拟文件系统.doc

     目录          0  2011-06-28 23:25  linux\Debug

     目录          0  2011-06-28 23:30  linux

----------- ---------  ---------- -----  ----

              7630687                    17


评论

共有 条评论

相关资源