操作系统实验文件管理C代码Word文档下载推荐.docx

上传人:b****7 文档编号:22819738 上传时间:2023-02-05 格式:DOCX 页数:19 大小:17.03KB
下载 相关 举报
操作系统实验文件管理C代码Word文档下载推荐.docx_第1页
第1页 / 共19页
操作系统实验文件管理C代码Word文档下载推荐.docx_第2页
第2页 / 共19页
操作系统实验文件管理C代码Word文档下载推荐.docx_第3页
第3页 / 共19页
操作系统实验文件管理C代码Word文档下载推荐.docx_第4页
第4页 / 共19页
操作系统实验文件管理C代码Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

操作系统实验文件管理C代码Word文档下载推荐.docx

《操作系统实验文件管理C代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验文件管理C代码Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

操作系统实验文件管理C代码Word文档下载推荐.docx

fputc('

0'

fp);

=0;

strcpy,"

/"

='

d'

;

[0]=-1;

[1]=-1;

fwrite(&

inode,sizeof(Inode),1,fp);

=-1;

31;

BLKNUM*BLKSIZE;

\0'

fclose(fp);

n"

file_name);

Thisfilesystemnotexist,itwillbecreate!

format();

login();

while(!

feof(fp))

fread(&

user,sizeof(User),1,fp);

flag=1;

break;

if(flag==0)break;

}while(flag);

num=-1;

}

n"

bitmap[i]='

1'

r+b"

topenfile%s\n"

fseek(fp,i,SEEK_SET);

returni;

ength;

add0=inode_array[num].address[0];

if(len>

512)

add1=inode_array[num].address[1];

if((fp=fopen(image_name,"

topenfile%s.\n"

fseek(fp,BLKSIZE+INODESIZE*INODENUM+add0*BLKSIZE,SEEK_SET);

ch=fgetc(fp);

for(i=0;

(i<

len)&

&

(ch!

='

)&

512);

temp[i]=ch;

if(i>

=512)

fseek(fp,BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE,SEEK_SET);

for(;

temp[i]='

ddress[0];

len=inode_array[num].length;

fseek(fp,BLKSIZE+INODESIZE*INODENUM+add0*BLKSIZE,SEEK_SET);

(i<

len)&

(temp[i]!

='

)&

(i<

fputc(temp[i],fp);

if(i==512)

fseek(fp,BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE,SEEK_SET);

(temp[i]!

num==0)

strcpy(path,;

else

m=0;

n=inum_cur;

while(m!

=inum_cur)

while(inode_array[n].iparent!

=m)

n=inode_array[n].iparent;

strcat(path,"

strcat(path,inode_array[n].file_name);

m=n;

n=inum_cur;

[%s]$"

path);

或者cddir1)

voidcd(void)

{

inti;

if(argc!

=2)

Commandcdmusthavetwoargs.\n"

return;

if(!

strcmp(argv[1],"

.."

inum_cur=inode_array[inum_cur].iparent;

INODENUM;

if((inode_array[i].inum>

0)&

(inode_array[i].type=='

(inode_array[i].iparent==inum_cur)&

!

strcmp(inode_array[i].file_name,argv[1])&

strcmp(inode_array[i].user_name,)

if(i==INODENUM)

Thisdirectoryisn'

texsited.\n"

else

inum_cur=i;

num>

0)&

(inode_array[i].iparent==inum_cur)&

!

if(inode_array[i].type=='

dcount++;

%-20s<

DIR>

inode_array[i].file_name);

else

fcount++;

bcount+=inode_array[i].length;

%-20s%12dbytes\n"

inode_array[i].file_name,inode_array[i].length);

\n%dfile(s)%11dbytes\n"

fcount,bcount);

%ddir(s)%11dbytesFreeSpace\n"

dcount,1024*1024-bcount);

num<

0)break;

if(i==INODENUM)

Inodeisfull.\n"

inode_array[i].inum=i;

strcpy(inode_array[i].file_name,argv[1]);

inode_array[i].type='

strcpy(inode_array[i].user_name,;

inode_array[i].iparent=inum_cur;

inode_array[i].length=0;

save_inode(i);

if((inode_array[i].inum>

(inode_array[i].type=='

f'

strcmp(inode_array[i].file_name,argv[1]))

Thisfileisexsit.\n"

if(inode_array[i].inum<

strcpy(inode_array[i].user_name,;

Thefileyouwanttoopendoesn'

inum=i;

Pleaseinputopenmode:

(1:

read,2:

write,3:

readandwrite):

"

%d"

mode);

if((mode<

1)||(mode>

3))

Openmodeiswrong.\n"

return;

FILENUM;

if(file_array[i].inum<

if(i==FILENUM)

Thefiletableisfull,pleaseclosesomefile.\n"

filenum=i;

file_array[filenum].inum=inum;

strcpy(file_array[filenum].file_name,inode_array[inum].file_name);

file_array[filenum].mode=mode;

Openfile%sby"

file_array[filenum].file_name);

if(mode==1)printf("

readonly.\n"

elseif(mode==2)printf("

writeonly.\n"

elseprintf("

readandwrite.\n"

if((file_array[i].inum>

strcmp(file_array[i].file_name,argv[1]))

if(i==FILENUM)

Open%sfirst.\n"

argv[1]);

elseif(file_array[i].mode==2)

tread%s.\n"

inum=file_array[i].inum;

Thelengthof%s:

%d.\n"

argv[1],inode_array[inum].length);

if(inode_array[inum].length>

0)

read_blk(inum);

inode_array[inum].length)&

temp[i]);

if((file_array[i].inum>

strcmp(file_array[i].file_name,argv[1]))break;

elseif(file_array[i].mode==1)

twrite%s.\n"

%d\n"

inode_array[inum].file_name,inode_array[inum].length);

if(inode_array[inum].length==0)

i=0;

inode_array[inum].address[0]=get_blknum();

Inputthedata(CTRL+Ztoend):

while(i<

1023&

(temp[i]=getchar())!

=EOF)i++;

temp[i]='

length=strlen(temp)+1;

inode_array[inum].length=length;

if(length>

inode_array[inum].address[1]=get_blknum();

save_inode(inum);

write_blk(inum);

Thisfilecan'

tbewritten.\n"

strcmp(file_array[i].file_name,argv[1]))break;

Thisfiledoesn'

tbeopened.\n"

file_array[i].inum=-1;

Close%ssuccess!

num=-1;

if(inode_array[i].length>

release_blk(inode_array[i].address[0]);

release_blk(inode_array[i].address[1]);

intn,t,i;

stack<

int>

istk;

i++)num>

=0)&

(!

strcmp(inode_array[i].file_name,argv[1]))&

(!

strcmp(inode_array[i].user_name,))

{

n=inode_array[i].inum;

break;

if(i==INODENUM)puts("

DirectoryERROR"

(n);

())

t=();

();

del(t);

(inode_array[i].iparent==t))

(i);

}

}

//功能:

退出当前用户(logout)

voidlogout()

Doyouwanttoexitthisuser(y/n)"

\nCurrentuserhasexited!

退出文件系统(quit)

voidquit()

Doyouwanttoexist(y/n):

exit(0);

显示错误

voiderrcmd()

CommandError\n"

//清空内存中存在的用户名

voidfree_user()

i<

10;

i++)

[i]='

循环执行用户输入的命令,直到logout

//"

help"

"

cd"

dir"

mkdir"

creat"

open"

"

read"

write"

close"

delete"

logout"

clear"

format"

quit"

voidcommand(void)

charcmd[100];

system("

cls"

do

pathset();

gets(cmd);

switch(analyse(cmd))

case0:

help();

case1:

cd();

case2:

dir();

case3:

mkdir();

case4:

create();

case5:

open();

case6:

read();

case7:

write();

case8:

close();

case9:

delet();

case10:

logout();

break;

case11:

case12:

init();

free_user();

case13:

quit();

case14:

errcmd();

default:

}while

(1);

//主函数

intmain(void)

command();

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1