/File_System

A buggy File System programme for BNU Operating System 2023.

Primary LanguageC++

流程图

1

程序错误

提供给大家的文件系统存在以下错误,大家可以对这些错误进行修改:

    • 程序运行开始就越界崩溃(在有的编译环境可能没有该错误)。

1

    • 创建一个与目录同名的文件时,系统崩溃。 -- commit dd64462

2

    • 重复创建文件目录时提示错误;重复创建同一个文件时出错,错误如下: -- commit 682eee7

3

    • Dir命令,显示当前目录一直是“..”,请修改为正确的当前路径。 -- commit 37acf99
    • 在根目录下面创建子目录a,在a中创建文件b,并写入大于一个块(512字节)的内容,之后返回根目录,查看目录内容的时候会出现错误。 -- commit 57bbe1c

5

6

    • 磁盘回收后再分配会出错,例如图中的第13个盘块就不见了。 -- commit d5d3535

7

    • 系统其他错误。
  • gets(buf) replaced by gets_s(buf, n) -- commit 09134fb
  • main.cpp 中默认 logout(2118) 而非实际登入 -- commit ca8e535
  • main.cpp 中登入键入密码时的换行符/回车会残留在缓冲区内进而被 gets_s(buf, n) 读入,输出表现为开头的> > -- commit 4249de2
  • mkdir 在目录名长度超过 DIRSIZ 后出现异常行为 -- commit 5f26786
  • 奇奇怪怪英文拼写错误、语法问题。(随时跟进)

建议增加的功能

    • 现有的程序是用内存模拟磁盘,建议大家改用文件模拟磁盘。这样,新创建的文件和目录等可以保留在模拟磁盘中,下次重新登录系统,可以查看上次登录时创建的文件和目录;
    • 增加新建用户的新功能:在命令行中输入“adduser ***”后,可以新增用户,新增的用户下次登录后仍然存在; -- commit fe3827c
    • 增加password命令可以修改用户密码; -- commit 588dd4c
    • 增加查看当前用户信息的新功能:在命令行中输入“who”,可以显示当前用户的所有信息,包括这个用户的id号、登录密码、所属用户组等; -- commit 0705e93
    • 在命令提示符前加入路径;增加pwd命令用来显示当前路径; -- commit 0fd483e, 4d69c75
    • 复制文件;
    • 其他功能。