一、实验目的
通过编程进一步了解文件系统。
二、实验内容
- 在服务器上用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 */
};