c语言下实现ls命令.doc

c语言下实现ls命令.doc

ID:51686986

大小:38.00 KB

页数:12页

时间:2020-03-15

c语言下实现ls命令.doc_第1页
c语言下实现ls命令.doc_第2页
c语言下实现ls命令.doc_第3页
c语言下实现ls命令.doc_第4页
c语言下实现ls命令.doc_第5页
资源描述:

《c语言下实现ls命令.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux下实现ls命令(仅适用于ls-apathname;ls-lpathname;lspathname)ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等,ls命令在日常的linux操作中用的很多-a选项:表示显示该目录下的所有文件,包括隐藏文件。-l选项:表示显示文件的详细信息,包括访问权限,文件大小……例如:ls–a/ls–l/1)主要构造的函数voiderror(constc

2、har*err_string,intline);//错误处理函数,打印错误所在行数和错误信息voidDemonstrate_attribute(structstatbuf,char*name);//获得文件属性并打印voidDemonstrate_single(char*name);//输出文件名,命令没有-l选项。输出文件名要保持上下对齐voidDemonstrate(intflag,char*pathname);//根据命令行参数和文件路径名来显示目标文件voidDemonstrate_dir(intflag_parameter,char*path);//为显示某个目录下的文

3、件做准备2)函数流程(1)获取该目录下文件的总数和最长文件名(2)若获该目录下所有文件的文件名,存放于变量filenames中(3)使用冒泡法对文件名按字母顺序存储于filenames中(4)调用Demonstrate()函数来显示每个文件信息3)程序中主要的结构体:参数structstat*buf是一个保存文件状态信息的结构体A):structstat{devst_dev;//文件设备号ino_tst_ino;//文件的i-nodemode_tst_mode;//文件类型和存储权限nlink_tst_nlink;//连到该文件的硬链接数目。uid_tst_uid;//文件所有者

4、的用户idgid_tst_gid;//文件所有者的组iddev_tst_rdev;//若此文件为设备文件,则为其设备编号off_tst_size;//文件大小blksize_tst_blksize;//文件系统的I/O缓冲区大小blkcnt_tst_blocks;//占用文件区块的个数time_tst_atime;//文件最近一次被访问的时间文件最后一次被修改的时间time_tst_ctime;//文件最近一次被更改的时间}其中,对于st_mode包含的文件类型信息,POSIX标准定义了一系列的宏:S_ISLNK(st_mode)//判断是否为符号链接S_ISREG(st_mod

5、e)//判断是否为一般文件S_ISDIR(st_mode)//判断是否为目录文件S_ISCHR(st_mode)//判断是否为字符设备文件S_IBLK(st_mode)//判断是否为块设备文件S_ISFIFO(st_mode)//判断是否为先进先出FIFOS_ISFOCK(st_mode)//判断是否为socketB):structpasswd*psd;//从该结构体中获取文件所有者的用户名C):structgroup*grp;//从该结构体中获取文件所有者所属组的组名4)心得体会本次课程设计我写的是Linux下的ls命令,通过这次课程设计,不仅使我对ls命令有了更深一层的认识,

6、还认识到了系统提供的命令实现的途径和方法。之前总是使用系统命令,如今自己编程实现了一些命令,每次使用系统提供的命令和调用自己编写的命令感觉大不相同。5)具体解析与详细代码:51099#include#include#include#include#include#include#include#include#include#include#include#i

7、nclude#definePARAMETER_NONE0//无参数#definePARAMETER_A1//-a:显示所有文件#definePARAMETER_L2//-l:一行显示一个文件的详细信息#defineMAXROWLEN80//一行显示的最多字符数intg_leave_len=MAXROWLEN;//一行剩余长度,用于输出对齐intg_maxlen;//存放某目录下最长文件名的长度voiderror(constchar*err_string,intl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。