Linux实验二:编程实现程序list.c,列表普通磁盘文件,包括文件名和文件大小。
1 实验目的:
(1) 使用vi编辑C源文件,熟悉工具vi。
(2) 使用Linux的系统调用和库函数。
(3) 体会Shell文件通配符的处理方式以及命令对选项的处理方式。
(4) 对选项的处理,自行编程逐个分析命令行参数。不考虑多选项挤在一个命令行参数内的情况。
2 实验要求:
与ls命令类似,处理对象可以有0到多个
0个:列出当前目录下所有文件
普通文件:列出文件
目录:列出目录下所有文件
实现自定义选项r,a,l,h,m以及 - -
r 递归方式列出子目录(每项要含路径,类似find的-print输出风格,需要设计递归程序)。、
a 列出文件名第一个字符为圆点的普通文件(默认情况下不列出文件名首字符为圆点的文件)
l 后跟一整数,限定文件大小的最小值(字节)
h 后跟一整数,限定文件大小的最大值(字节)
m 后跟一整数n,限定文件的最近修改时间必须在n天内
-- 显式地终止命令选项分析
3 实验设计
所用到的库函数函数和头文件:
头文件:#include<sys/types.h>
基本系统数据类型,是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。
S_ISDIR()函数的作用是判断一个路径是不是目录
头文件:<sys/stat.h>
函数说明:通过路径path获取文件信息,并保存到buf所指向的结构体stat中
返回值:执行成功返回0,失败返回-1,错误代码存于errno
Stat 函数:取得指定文件的文件属性,文件属性存储在结构体stat里面。在本次代码中无数次使用了该结构
int stat(const char* path, struct stat