博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟实现ls-l进阶
阅读量:6976 次
发布时间:2019-06-27

本文共 2110 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
void print(char *filename){ struct stat st; int ret = stat(filename, &st); if(ret == -1) { perror("stat"); exit(1); } // 存储文件类型和访问权限 char perms[11] = { 0}; // 判断文件类型 switch(st.st_mode & S_IFMT) { case S_IFLNK: perms[0] = 'l'; break; case S_IFDIR: perms[0] = 'd'; break; case S_IFREG: perms[0] = '-'; break; case S_IFBLK: perms[0] = 'b'; break; case S_IFCHR: perms[0] = 'c'; break; case S_IFSOCK: perms[0] = 's'; break; case S_IFIFO: perms[0] = 'p'; break; default: perms[0] = '?'; break; } // 判断文件的访问权限 // 文件所有者 perms[1] = (st.st_mode & S_IRUSR) ? 'r' : '-'; perms[2] = (st.st_mode & S_IWUSR) ? 'w' : '-'; perms[3] = (st.st_mode & S_IXUSR) ? 'x' : '-'; // 文件所属组 perms[4] = (st.st_mode & S_IRGRP) ? 'r' : '-'; perms[5] = (st.st_mode & S_IWGRP) ? 'w' : '-'; perms[6] = (st.st_mode & S_IXGRP) ? 'x' : '-'; // 其他人 perms[7] = (st.st_mode & S_IROTH) ? 'r' : '-'; perms[8] = (st.st_mode & S_IWOTH) ? 'w' : '-'; perms[9] = (st.st_mode & S_IXOTH) ? 'x' : '-'; // 硬链接计数 int linkNum = st.st_nlink; // 文件所有者 char* fileUser = getpwuid(st.st_uid)->pw_name; // 文件所属组 char* fileGrp = getgrgid(st.st_gid)->gr_name; // 文件大小 int fileSize = (int)st.st_size; // 修改时间 char* time = ctime(&st.st_mtime); char mtime[512] = { 0}; strncpy(mtime, time, strlen(time)-1); char buf[1024]; sprintf(buf, "%s %d %s %s %d %s %s", perms, linkNum, fileUser, fileGrp, fileSize, mtime, filename); printf("%s\n", buf);}void do_ls(char dirname[]){ /* * *定义一个目录流,和目录流结构体保存读到的结果。 * */ DIR *dir_ptr; struct dirent *direntp; if((dir_ptr = opendir(dirname)) == NULL) fprintf(stderr,"ls1:cannot open %s\n",dirname); else { while((direntp = readdir(dir_ptr)) != NULL) //打印结果 print(direntp->d_name); // printf("%s\n",direntp->d_name); // //关闭目录流 closedir(dir_ptr); // }}int main(int argc, char* argv[]){ if(argc==1) do_ls("."); else { while(--argc) { printf("%s:\n",*++argv); do_ls(*argv); } } print(argv[1]); return 0;}

转载于:https://www.cnblogs.com/readlearn/p/10806420.html

你可能感兴趣的文章
JSOUP如何POST只含JSON格式的数据
查看>>
LeetCode OJ:Generate Parentheses(括号生成)
查看>>
sql 各种格式
查看>>
学习javascript过程中的心得体会
查看>>
分布式文件系统之FastDFS
查看>>
Basic Tutorials of Redis(7) -Publish and Subscribe
查看>>
谈谈Circuit Breaker在.NET Core中的简单应用
查看>>
PyCharm IDE环境搭建
查看>>
HADOOP之PiG简介
查看>>
2017 多校6 String
查看>>
influxdb与传统数据库的比较
查看>>
滚动字幕
查看>>
Centos目录结构详细版
查看>>
MySQL 如何执行关联查询
查看>>
从硬币游戏学习敏捷开发
查看>>
2017 4月14日
查看>>
KMP
查看>>
CefSharp .net
查看>>
java中关于null的一些理解
查看>>
sqlite3中的数据类型
查看>>