Unix & Linux文件系统
操作系统实验报告
[实验内容]
【任务】
为Linux 系统设计一个简单的二级文件系统。要求做到以下几点:bhs
1 . 可以实现下列几条命令:
login | 用户登录 |
logout | 用户注销 |
Create | 新建文件 |
Delete | 删除文件 |
sacrifice>magic numberOpen | 打开文件 |
Clo | 关闭文件 |
Read | 读文件 |
Write | 写文件 |
dir | 列目录 |
| |
2 . 列目录时要列出文件名,物理地址,保护码和文件长度。
3 . 源文件可以进行读写保护。
【程序设计】
1. 本文件系统采用两级目录,其中第一级对应用户帐号。第二级对应用户帐号下面的文件。本文件系统未考虑文件的共享与保护。
2. 本程序在Win2000下,用Visual C++ 6 .0编译运行。但只需稍加修改即可在Linux下运行。
3 . 代码(见源程序)
4 . 主要数据结构:
#define FILENAME_LENGTH 10 //最大用户数
#define commandAmount 9 //指令数
char _ur[20]; //当前用户名
char currentDir[255]; //当前所在目录
negative什么意思
typedef struct UrMess //所有用户信息
{
char _UrName[20];
char _UrPwd[20];
struct UrMess *nextUr;
}_UrMess;
_UrMess *firstUr;
typedef struct FolderDir //目录路径信息
{
char _Dir[255];
struct FolderDir *fatherDir;
}_RootDir;
_RootDir *rootFolder;
typedef struct Folder //当前目录子目录信息
{
char _FolderName[100];
zebra是什么意思 struct Folder *nextFolder;
}_Folder;
_Folder *firstFolder;
typedef struct File //当前目录下文件信息
{
char _FileName[100];
struct File *nextFile;
}_File;
_File *firstFile;
【程序说明】
1 . 功能函数设计:
void init(); //初始化部分内容
int ReadUrMess(); //读取已有用户信息
int urCreate(int sumUrs); //用户注册
int login(); //登录
void createRootFolder(char urname[]); //为新用户分配空间
void TraverFolder(char path[]); //遍历文件及文件夹
void ListFileAndFolder(); //显示当前文件夹下所有文件
void ChangeDir(char folderName[]); //目录跟换
void Delete(char fName[]); //删除文件或文件夹
void CatFile(char fName[]); //打开文件,查看文件内容
void AddContent(char fName[]); //向文件写入内容
void CreateFile(char fName[]); //创建文件
void CreateFolder(char folderName[]); //创建文件夹
void HelpFile(); //帮助文件
2 . 程序代码:horshoe
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
doblo
#include <dirent.h>
#define MaxUr 20
#define commandAmount 9
char _ur[20];
char currentDir[255];
typedef struct UrMess
{
char _UrName[20];
char _UrPwd[20];
struct UrMess *nextUr;
}_UrMess;
_UrMess *firstUr;
typedef struct FolderDir
{
char _Dir[255];
struct FolderDir *fatherDir;
}_RootDir;
_RootDir *rootFolder;
typedef struct Folder
{
荨麻属
char _FolderName[100];
struct Folder *nextFolder;
}_Folder;
_Folder *firstFolder;
typedef struct File
{
char _FileName[100];
struct File *nextFile;
成都信息工程学院录取查询}_File;
_File *firstFile;
void init(); //初始化部分内容
int ReadUrMess(); //读取已有用户信息
int urCreate(int sumUrs); //用户注册
int login(); //登录
void createRootFolder(char urname[]); //为新用户分配空间
void TraverFolder(char path[]); //遍历文件及文件夹
void ListFileAndFolder(); //显示当前文件夹下所有文件
void ChangeDir(char folderName[]); //目录跟换
void Delete(char fName[]); //删除文件或文件夹
void CatFile(char fName[]); //打开文件,查看文件内容
void AddContent(char fName[]); //向文件写入内容
void CreateFile(char fName[]); //创建文件
void CreateFolder(char folderName[]); //创建文件夹
void HelpFile(); //帮助文件
int main()
{
int logined=0;
int lect;
划船用英语怎么说 char ch;
char order[commandAmount][9];
strcpy(order[0],"create");
strcpy(order[1],"rm");
strcpy(order[2],"cat");
strcpy(order[3],"write");
strcpy(order[4],"ls");
strcpy(order[5],"cd");
strcpy(order[6],"exit");
strcpy(order[7],"mkdir");
strcpy(order[8],"help");
char command[15],command_str1[255];
int i,j;
init();
int urNum = ReadUrMess();
// printf("Ur count:%d\n",urNum);
int isright=1;
while(isright==1)
{
printf("********************************************\n");
printf(" 1、Creat ur\n");
printf(" 2、login\n");
printf("********************************************\n");
printf("Plea chooce the function key:> ");
int choice;
tbuf(stdin,NULL);
scanf("%d",&choice);
if(choice==1)
{
logined=urCreate(urNum);
isright=0;
}
el if(choice==2)
{
logined=login(urNum);
isright=0;
}