⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 install.c

📁 操作系统实验,文件系统,c语言实现的
💻 C
字号:
#include <stdio.h>

#include <string.h>

#include "filesys.h"

  

install()

{

   int i,j;

   /* 0. open the file column */

  /* fd=fopen("filesystem","w+r+b");

   if(fd==NULL)

   {

       printf("\nfilesys can not be loaded \n");

   exit(0);

   }*/

   /* 1. read the filsys from the superblock */

   fseek(fd,BLOCKSIZ,SEEK_SET);

   fread(&filsys,1,sizeof(struct filsys),fd);

  

   /* 2. initialize the inode hash chain  */

   for(i=0;i<NHINO;i++)

   {

       hinode[i].i_forw=NULL;

   }

   /* 3. initialize the sys-ofile  */

   for(i=0;i<SYSOPENFILE;i++)

   {

       sys_ofile[i].f_count=0;

       sys_ofile[i].f_inode=NULL;

   }

   /* 4. initialize the user */

   for(i=0;i<USERNUM;i++)

   {

       user[i].u_uid=0;

       user[i].u_gid=0;

       for(j=0;j<NOFILE;j++)

   {

       user[i].u_ofile[j]=SYSOPENFILE+1;

   }

   }

   /* 5. read the main directory to initialize the dir */

   cur_path_inode=iget(1);

   dir.size=cur_path_inode->di_size/(DIRSIZ+2);

  

   for(i=0;i<DIRNUM;i++)

   {

       strcpy(dir.direct[i].d_name,"abcd1234567890");

       dir.direct[i].d_ino=0;

   }

   for(i=0;i<dir.size/(BLOCKSIZ/(DIRSIZ+2));i++)

   {   

    fseek(fd,DATASTART+BLOCKSIZ*cur_path_inode->di_addr[i],SEEK_SET);

    fread(&dir.direct[(BLOCKSIZ/(DIRSIZ+2))*i],1,BLOCKSIZ,fd);

   }

   fseek(fd,DATASTART+BLOCKSIZ*cur_path_inode->di_addr[i],SEEK_SET);  

 fread(&dir.direct[(BLOCKSIZ)/(DIRSIZ+2)*i],1,cur_path_inode->di_size%BLOCKSIZ,fd);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -