Linux 系统文件信息的遍历实验

2017.5.13

【实验内容】

编写一个程序实现“ls –l FILEIO”的功能,使其显示 drwxr-xr-x 2 linux linux 4096 2009-08-12 09:50 FILEIO 通过此次实验掌握如何获取文件信息的系统调用及 stat()的使用方法

【实验平台】

PC 机、Ubuntu 操作系统,gcc 等工具

【实验步骤】

要求实现以下功能:

列出的信息包括模式字段,链接数,用户名,组名,文件大小,文件建立时间,文件名,以上字段从 左到右一次显示。

【实验提示】

用 stat 获得文件信息,存储在 struct stat 结构中,/usr/include/sys/stat.h 描述了 struct stat 的成员变量, 这里只列出要用到的成员变量

ushort st_mode; 文件类型和许可权限

ushort st_nlink; 连接数

ushort st_uid; 属主的用户 ID

ushort st_gid; 属主的组 ID

ulong st_size; 普通文件的字节长度

ulong st_ctime; 最后文件状态更改时间

用 ctime 将文件状态的最后修改时间转换为字符串;

用/usr/include/sys/stat.h 中定义的宏将 st_mode 的位分离出来,并填充到一个字符数组中,等待输出;

用 getpwuid()和 getgrgid()将用户 ID 和组 ID 然后转换成字符串。

【实验思考】

1、在以上的基础上如果输入的是文件目录怎么办?将以上的函数封装起来作为一个功能函数。利用 opendir()、readdir()、closedir()来操作目录,并调用前面编写的函数处理和输出文件信息。

2、如何实现类似于“ls”的一个 myls 的命令,即可以实现包含-l 、-a 参数的 myls 命令。参数处理可以利用 getopt 函数来实现。


Tags:
Stats:
32 comments
236 views