- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言实现ls_l的功能
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 sys/types.h
#include sys/stat.h
#include unistd.h
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 */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
只要通过相应字段进行格式处理就行啦!
2.权限处理:st_mode就是文件的权限部分。St_mode本身就是一个16位的二进制,前四位是文件的类型,紧接着三位是特殊权限,左后九位就是ls -l列出来的九个权限。
linux本身提供了很多测试宏来测试文件的类型的
#define __S_IFMT 0170000 /* These bits determine file type. */
/* File types. */
#define __S_IFDIR 0040000 /* Directory. */
#define __S_IFCHR 0020000 /* Character device. */
#define __S_IFBLK 0060000 /* Block device. */
#define __S_IFREG 0100000 /* Regular file. */
#define __S_IFIFO 0010000 /* FIFO. */
#define __S_IFLNK 0120000 /* Symbolic link. */
#define __S_IFSOCK 0140000 /* Socket. */
利用上面的测试宏就可以判断文件的类型,至于文件的权限部分可以使用掩码的方式来处理。
具体代码
您可能关注的文档
- 77部经典2战电影 [2).docx
- car电脑维修试卷B.doc
- 6年级阅读训练6篇[1).doc
- 7年级[上)诗歌赏析.doc
- car英语常用缩写.docx
- car维修质量检验作业.doc
- 7年坚持,5年注会,1个梦.docx
- car英语常见缩写.doc
- 7[1).1物体是由分子组成.doc
- 7元素周期表-元素周期律.doc
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
文档评论(0)