编写liunx系统的简单多用户文件系统模拟c语言代码
时间: 2024-03-09 12:51:11 浏览: 53
以下是一个简单的多用户文件系统模拟的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 10
#define MAX_FILES 20
#define MAX_FILE_SIZE 1024
// 定义文件结构体
typedef struct {
char name[20];
char content[MAX_FILE_SIZE];
int size;
int owner;
} File;
// 定义用户结构体
typedef struct {
char name[20];
int uid;
} User;
// 初始化文件系统
void init(File* files, User* users) {
int i, j;
for (i = 0; i < MAX_FILES; i++) {
strcpy(files[i].name, "");
files[i].size = 0;
files[i].owner = -1;
memset(files[i].content, 0, sizeof(files[i].content));
}
for (j = 0; j < MAX_USERS; j++) {
strcpy(users[j].name, "");
users[j].uid = -1;
}
}
// 创建文件
int create_file(File* files, User* users, char* file_name, int owner_id) {
int i;
for (i = 0; i < MAX_FILES; i++) {
if (strcmp(files[i].name, "") == 0) {
strcpy(files[i].name, file_name);
files[i].size = 0;
files[i].owner = owner_id;
memset(files[i].content, 0, sizeof(files[i].content));
return i;
}
}
return -1;
}
// 写入文件内容
int write_file(File* files, int file_id, char* content, int size) {
if (file_id < 0 || file_id >= MAX_FILES) {
return -1;
}
if (size > MAX_FILE_SIZE) {
return -1;
}
strcpy(files[file_id].content, content);
files[file_id].size = size;
return 0;
}
// 读取文件内容
char* read_file(File* files, int file_id) {
if (file_id < 0 || file_id >= MAX_FILES) {
return NULL;
}
return files[file_id].content;
}
// 删除文件
int delete_file(File* files, int file_id) {
if (file_id < 0 || file_id >= MAX_FILES) {
return -1;
}
strcpy(files[file_id].name, "");
files[file_id].size = 0;
files[file_id].owner = -1;
memset(files[file_id].content, 0, sizeof(files[file_id].content));
return 0;
}
// 查找用户
int find_user(User* users, char* user_name) {
int i;
for (i = 0; i < MAX_USERS; i++) {
if (strcmp(users[i].name, user_name) == 0) {
return users[i].uid;
}
}
return -1;
}
// 添加用户
int add_user(User* users, char* user_name) {
int i;
for (i = 0; i < MAX_USERS; i++) {
if (strcmp(users[i].name, "") == 0) {
strcpy(users[i].name, user_name);
users[i].uid = i;
return i;
}
}
return -1;
}
int main() {
File files[MAX_FILES];
User users[MAX_USERS];
// 初始化文件系统
init(files, users);
// 创建用户
int user1_id = add_user(users, "user1");
int user2_id = add_user(users, "user2");
// user1 创建文件
int file1_id = create_file(files, users, "file1.txt", user1_id);
// user2 尝试读取 user1 创建的文件
char* content = read_file(files, file1_id);
if (content == NULL) {
printf("user2 无法读取文件\n");
} else {
printf("user2 读取的文件内容为:%s\n", content);
}
// user1 写入文件内容
char* file1_content = "这是 user1 创建的文件内容";
int file1_size = strlen(file1_content);
write_file(files, file1_id, file1_content, file1_size);
// user2 尝试删除 user1 创建的文件
int result = delete_file(files, file1_id);
if (result < 0) {
printf("user2 无法删除文件\n");
} else {
printf("user2 删除文件成功\n");
}
return 0;
}
```
这个模拟文件系统包括了创建文件、写入文件内容、读取文件内容和删除文件等基本功能,同时支持多用户,可以根据需要进行扩展。
阅读全文