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 */