编程实践----实现自己的ls命令

本文探讨了如何实现自己的ls命令,包括关键函数的功能介绍:路径处理、文件和目录信息获取、排序、属性显示等。文章还强调了参数处理的重要性,特别是使用getopt函数来解析命令行参数,并分享了编写程序时需要注意的思路清晰和细节处理经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、程序函数流程图

流程图

二、关键函数的功能

1.void path_handle(char *path)

函数功能:处理传递过来的路径信息,判断文件类型。

2.int file_information(char *path)

函数功能:获取文件信息

3.void directory_information(char *path)

函数功能:获取目录信息

4.void sort(char *filename [MAX_FILE_NAME][NAME_MAX+1], int count)

函数功能:排序

5.void display_attribute(struct stat buf, char path)

函数功能:获取文件属性并打印

6.void display_single(char *path)

函数功能:输出文件名

7.int dir_queue_init(void)

函数功能:初始化链表

8.int dir_queue_get(char *name)

函数功能:获取最早插入的元素并删除,判空

9.int dir_queue_add(char *name)

函数功能:插入新元素

10.void output(struct stat *buf, char *path)

函数功能:信息输出

三、文件实现部分重要代码

参数处理

参数处理部分自己开始没有想出来,我看了书上的处理办法,一个一个解析出来,但是我觉得比较麻烦,后来听了学长说的参数处理的函数getopt,这个函数自己研究了挺长时间,稍微有点难理解,但是他是自己处理参数,使用起来特别方便。先看一下实现代码
这里写图片描述
这里写图片描述

首先说一下,我把确定参数-a, -l,-R的参数定义为全局变量方便处理

这里写图片描述
g根据getopt的返回值确定参数,如果识别不到别的选项,返回-1,遇到其他选项则返回 ‘?’
optind 是getopt 函数自己设置的全局变量,下一次调用getopt时,从optind存储的位置开始检查选项。
我说的可能不是很清楚,有兴趣的话可以参考一下学长的博客,介绍了getopt 的用法。
getopt的用法

小心得
写程序还是要有清晰的思路再开始,而且细小的地方问题最好也能一次考虑到,自己的思路不是很清晰就写了一次,最后还是删掉重来;有些小问题考虑的不周全,导致最后很难修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值