在Unix上编写ls -l的C语言程序,北京邮电大学Unix编程环境课程第一次实验报告ls命令.pdf...

实验报告

实验名: Unix 编程第一次实验

课程名: Unix 编程环境

姓名:

学号:

班级:

1

实验目的:

练习vi,使用UNIX 的系统调用和库函数,体会UNIX 文件通配符的处理方式

以及命令对选项的处理方式。

实验要求:

编程实现程序list.c,列表普通磁盘文件(不考虑目录和设备文件等),列出文

件名和文件大小。

与ls 命令类似,命令行参数可以有0 到多个

 0 个参数:列出当前目录下所有文件

 参数为普通文件:列出文件

 参数为目录:列出目录下所有文件

实现自定义选项r,a,l,h,m 以及--

 r 递归方式列出子目录

 a 列出文件名第一个字符为圆点的普通文件 (默认情况下不列出文件名首字

符为圆点的文件)

 l 后跟一整数,限定文件大小的最小值 (字节)

 h 后跟一整数,限定文件大小的最大值 (字节)

 m 后跟一整数n,限定文件的最近修改时间必须在n 天内

 显式地终止命令选项

程序说明:

1) 命令选项的存储:

struct options 采用 struct options 结构存储命令的选项,flag

{ 代表有无此选项,例如aFlag 为1 就表示有 “-a”

Int aFlag, 选项,aFlag 为0 则表示没有 “-a”选项。

rFlag,lFlag,hFlag,mFlag; lPara、hPara 和mPara 用来存储”-l”、”-h”、”-m”选

long lPara,hPara; 项所带的参数。

int mPara;

};

2) 命令的读取:

struct path 采用函数getCommend 读取命令,声明一个

{ opEnd 变量用来指示选项的输入是否结束。

char* path; opEnd 初始为0,代表选项的输入没有结束,当

struct path* next; 遇到“-- “之后,opEnd 置为1,代表选项输入结

}; 束。在opEnd 为0 的时候,命令中以”- “开头

的,都认为是一个选项,在opEnd 为1 的时候,

命令中以”- “开头的则不作为选项而作为命令

的参数。

在识别选项的同时,也要读入命令的参数,命令的参数也就是文件地址,

存储在结构struct path 所组成的链表当中。在读完命令之后,需要判断一下

2

链表是否为空,如果链表是空的则代表命令中没有参数,这是需要程序自动

得把当前目录即”./“加入链表当中。

3) 选项的判断:

int judje(struct options option,struct stat info,char*fileName)

采用函数 judje 函数判断一个文件是否满足选项的要求,如果满足要求返

回1,否则返回0。

4) 选项的参数的获取:

int getPara(char* option)

采用函数getPara 获取选项所带的参数,如果参数合法则把参数转化为int 并返回,如

果参数不合法,比如参数中字母或符号等则返回-1;

5) 打印:

void listFiles(char* path,struct options option)

采用函数listFiles 打印文件,当需要递归时,把当前打印的目录和需要递

归的文件目录合并在一起传入listF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值