资源简介
实验目的:
通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。
实验要求:
为linux系统设计一个简单的二级文件系统。要求做到以下几点:
(1)可以实现下列几条命令(至少4条);
login 用户登陆
dir 列文件目录
create 创建文件
delete 删除文件
open 打开文件
close 关闭文件
read 读文件
write 写文件
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define MaxUser 1028 //用户最多数目
#define commandAmount 12 //对文件操作的指令数
//用户管理
int userID = -1; //用户登录的ID号,值为-1时表示没有用户登录
char Name[15]; //正在登录用户名
char firstName[5]; //正在被操作的文件
long used = 0; //全局变量,用户数
long used1 = 0; //全局变量,用户创建文件数
char q2[20] = “file/node/“;
typedef struct master_file_directory
{
char userName[15];
char password[15];
} MFD;
MFD userTable[MaxUser];
typedef struct node {
char fileName[15];
char number[5];
//UFD *user;
} MFD1;
MFD1 fileTable[1024];
void userCreate(); //创建用户
int login(); //用户登录
int createDirectory(const char*filename);//创建目录
void fileAttribute(char*fileName);//文件属性
void readDir1();//读用户
void create(char*name); //创建文件
void deletefile(const char*filename);//删除文件
int openfile(char*name);//打开文件
void writefile(char name[] char*buf);//写文件
void readfile(char name[]);//查看文件内容
void closefile(int fd);
void userCreate();//创建用户
int login();//用户登录
void createfile(char name[] char kind[]);//创建文件
void reFileName(char*old char*new);//文件重命名
void chmodfile(char name[] char kind[]);//修改文件权限
int main() {
char order[commandAmount][10];
strcpy(order[0] “create“);
strcpy(order[1] “delete“);
strcpy(order[2] “read“);
strcpy(order[3] “write“);
strcpy(order[4] “arr“);
strcpy(order[5] “chmod“);
strcpy(order[6] “ren“);
strcpy(order[7] “dir“);
strcpy(order[8] “return“);
strcpy(order[9] “exit“);
strcpy(order[10] “diru“);
strcpy(order[11] “delu“);
char command[1028] command_str1[10] command_str2[10] command_str3[1028];
int i k j;
int length;
createDirectory(“file“);
createDirectory(“file/node“);
create(“file/user.txt“);
long used;
struct stat d;
stat(“file/user.txt“ &d);
d.st_size;
used = (d.st_size) / 30l;
FILE *fp;
if ((fp = fopen(“file/user.txt“ “r“)) == NULL)
{
printf(“cannot open this file\n“);
exit(0);
}
fread(userTable sizeof(struct master_file_directory) used fp);
fclose(fp);
if(used==0)
{
strcpy(userTable[0].userName“root“);
strcpy(userTable[0].password“root“);
char q[20] = “file/“;
char q2[20] = “file/node/“;
strcat(q userTable[0].userName);
strcat(q2 userTable[0].userName);
createDirectory(q);
create(q2);
used++;
FILE *fp;
if ((fp = fopen(“file/user.txt“ “w“)) == NULL)
{
printf(“cannot open this file\n“);
exit(0);
}
fwrite(userTable sizeof(struct master_file_directory) used fp);
fclose(fp);
}
int g = 0;
while (g == 0) {
printf(“********************************************\n“);
printf(“ 1、login\n“);
printf(“ 2、register\n“);
printf(“ 3、exit\n“);
printf(“********************************************\n“);
printf(“Please chooce the function key:>“);
int choice;
scanf(“%d“ &choice);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1775104 2012-03-15 20:32 《操作系统》课程实验报告.doc
文件 17437 2012-02-19 20:01 file.c
----------- --------- ---------- ----- ----
1792541 2
评论
共有 条评论