• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: 文件系统  Unix  C语言  

资源简介

(1)多用户 :usr1,usr2 (2个用户) (2)多级目录:具有树形目录结构; (3)具有login (用户登录)和用户身份认证功能; (4)文件的创建: create (5)文件的打开:open (6)文件的读:read (7)文件的写:write (8)文件关闭:close (9)删除文件:delete (10)创建目录(建立子目录):mkdir (11)改变当前目录:cd (12)列出文件目录:dir(列目录时要列出文件名、物理地址和文件长度) (13)退出:logout (14)有文件保护机制,如对文件设置访问权限等(如用户usr1不能对usr2创建的文件进行修改等)。

资源截图

代码片段和文件信息

/******************************************************
 * 作者:安佳 2006116236
 * 创建时间:2009-04-01
 * 最近修改时间:2009-04-10
 *
 * 题目:模拟UNIX文件系统
 * 实现功能:
 *            1. 多用户的登陆
 *            2. 文件的创建、打开、读、写、关闭、删除
 *            3. 创建子目录、改变当前目录、列出文件目录
 *            5. 文件的部分保护机制
 *            4. 退出
 *
 ******************************************************/

#include 
#include                          //  清屏函数 system(“cls“)
#include “unix.h“

void main()
{
int result type;
char input[50];
char command[3][20];             // 输入的命令

    if( readBitmapFile(“bitmap.txt“) == FAIL )     // 读入位示图信息
putError(“读取位示图文件失败 !“);

    result = initial();  // 初始化: 在根目录下分别创建两个目录 root 和 home
    if( result == FAIL )
{
putError(“根目录创建失败!没有空闲盘块 ...“);
return;
}  

result = Login();   // 登录系统
while( result == FAIL ) // 若密码连续错误3次,则换另一用户重新登
{
system(“cls“);
result = Login(); 
}
printf(“登录成功 !\n“);

while(1)
{
proAddr();
    fflush(stdin);
    gets(input);
    type = analyze( input command ); 

    switch( type )
{

        case 0:                                       // adduser user_name  
            result = addUser(command[1] command[1]); //默认密码同用户名一致 
        if( result == FAIL )
       putError(“用户数已满,添加失败 !“);
                    else 
       printf(“添加用户成功 !\n“);
        break;
         case 1:                                       // password
            result = alterPasswd(command[1]);
        if( result == FAIL )
       putError(“无效用户名 ! 应为 : password uname“);
                    else 
       printf(“修改密码成功 !\n“);
            break;
           case 2:                                       // su user_name
            result = suUser( command[1] );
if( result == FAIL )
putError(“无效用户名 !“);
else if( result == OCASE )
putError(“密码错误 切换失败 !“);
else 
printf( “用户切换成功 !\n“ );
        break;
       case 3:                                       // create file_name
            result = createFile( command[1] );
        if( result == FAIL )
           putError(“文件创建失败 ! 该目录下能建立的文件已满 ...“);
else if( result == OCASE )
           putError(“文件创建失败 ! 没空闲的磁盘i节点 ...“);
else if( result == OCASE2 )
           putError(“文件创建失败 ! 内存不足 ...“);
                    else 
       printf(“文件创建成功 !\n“);
            break;
       case 4:                                      // open file_name
            result = openFile( command[1] command[2] );
        if( result == FAIL )
       putError(“文件打开失败 ! 用户打开文件表已满 ...“);
else if( result == OCASE )
       putError(“文件打开失败 ! 无效文件名 ...“);
                    else 
       printf(“文件打开成功 !\n“);
            break;
       case 5:                                       // read file_name
            result = readFile( command[1] );
if( result == FAIL )
           putError(“在

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7959  2009-04-10 19:13  unix.h

     文件         30  2009-04-02 18:21  bitmap.txt

     文件       5339  2009-04-10 18:37  main.cpp

     文件      22688  2009-04-21 00:26  unix.cpp

----------- ---------  ---------- -----  ----

                36016                    4


评论

共有 条评论