2024年3月24日发(作者:)
Linux下C语言实现ls -l功能
需求:用ls -l显示文件夹下所有的文件及属性
分析:1 用ls显示文件夹下的所有文件,首先用opendir打开文件夹,再用readdir
读取文件夹里面的文件,最后closedir关闭文件夹。
2 用ls -l比较复杂,打印出来的内容包括:(文件属性+文件名) 由以下几部
分构成——文件的类型(d——目录文件 -——文本文件...)文件的可执行权限 所属组的
权限,其它组的权限 硬链接数 文件拥有者 文件拥有者组 文件大小 时间 文件名
解决方案:
1. 要想实现ls -l就得知道通过什么系统调用获取文件信息,首先自然是要通过man
来查找相关的系统调用。
man -k file|grep status
man -k file|grep information
man -k file|grep info
通过上面的搜索就可以得到stat这个系统调用获取文件属性。
man 2 stat获取系统调用的详细使用方法:
#include
#include
#include
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */


发布评论