一、实验目的

通过编程进一步了解文件系统。

二、实验内容

  • 在服务器上用Vim编写一个程序:实现Linux系统命令ls -lai的功能
  • 给出运行结果截图,对于每一列是如何获取的,结合源代码做解释
suqiankun@jmu-cs-ubuntu:~$ ls -lai
total 160
920635 drwx------   6 suqiankun ubuntu  4096 Apr 27 09:52 .
131195 drwxr-xr-x 129 root      root    4096 Apr 25 21:52 ..
920658 -rw-------   1 suqiankun ubuntu 10359 Apr 27 10:38 .bash_history
920636 -rw-r--r--   1 suqiankun ubuntu   220 Apr  5  2018 .bash_logout
920638 -rw-r--r--   1 suqiankun ubuntu  3771 Apr  5  2018 .bashrc
920656 drwx------   2 suqiankun ubuntu  4096 Mar 11 16:01 .cache

三、实验报告

1. 编写程序

在服务器上用Vim编写一个程序:实现Linux系统命令ls -lai的功能,给出源代码。

2. 分析运行结果

给出运行结果截图,对于每一列是如何获取的,结合源代码做解释

suqiankun@jmu-cs-ubuntu:~$ ls -lai
total 160
920635 drwx------   6 suqiankun ubuntu  4096 Apr 27 09:52 .
131195 drwxr-xr-x 129 root      root    4096 Apr 25 21:52 ..
920658 -rw-------   1 suqiankun ubuntu 10359 Apr 27 10:38 .bash_history
920636 -rw-r--r--   1 suqiankun ubuntu   220 Apr  5  2018 .bash_logout
920638 -rw-r--r--   1 suqiankun ubuntu  3771 Apr  5  2018 .bashrc
920656 drwx------   2 suqiankun ubuntu  4096 Mar 11 16:01 .cache

3. 通过该实验产生新的疑问及解答

通过该实验如果有产生新的疑问,可以写出来,并尝试自己解决问题。

4. 加分项

读取/proc下相关文件,获取计算机基本配置信息。

加分项满分10分。

值得注意的是,加分项初衷是鼓励同学进一步探索,若发现不加思考从网上拷贝一堆内容过来,扣[-10, 0)分,因为你浪费了自己的时间,也浪费我的时间。

附:咱们服务器/usr/include/linux/stat.h文件状态结构体的定义:

struct statx {
    /* 0x00 */
    __u32   stx_mask;   /* What results were written [uncond] */
    __u32   stx_blksize;    /* Preferred general I/O size [uncond] */
    __u64   stx_attributes; /* Flags conveying information about the file [uncond] */
    /* 0x10 */
    __u32   stx_nlink;  /* Number of hard links */
    __u32   stx_uid;    /* User ID of owner */
    __u32   stx_gid;    /* Group ID of owner */
    __u16   stx_mode;   /* File mode */
    __u16   __spare0[1];
    /* 0x20 */
    __u64   stx_ino;    /* Inode number */
    __u64   stx_size;   /* File size */
    __u64   stx_blocks; /* Number of 512-byte blocks allocated */
    __u64   stx_attributes_mask; /* Mask to show what's supported in stx_attributes */
    /* 0x40 */
    struct statx_timestamp  stx_atime;  /* Last access time */
    struct statx_timestamp  stx_btime;  /* File creation time */
    struct statx_timestamp  stx_ctime;  /* Last attribute change time */
    struct statx_timestamp  stx_mtime;  /* Last data modification time */
    /* 0x80 */
    __u32   stx_rdev_major; /* Device ID of special file [if bdev/cdev] */
    __u32   stx_rdev_minor;
    __u32   stx_dev_major;  /* ID of device containing file [uncond] */
    __u32   stx_dev_minor;
    /* 0x90 */
    __u64   __spare2[14];   /* Spare space for future expansion */
    /* 0x100 */
};
本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2023-05-22 15:52

results matching ""

    No results matching ""