编写一个程序实现“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 函数来实现。