Linux基础:模拟ls -l命令的实现(环境ubutun)
2020-08-25 20:21
381 查看
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <time.h> #include <pwd.h> #include <grp.h> void file_type(mode_t mode) { switch(mode&S_IFMT) { case S_IFSOCK: printf("s"); break; case S_IFLNK: printf("l"); break; case S_IFREG: printf("-"); break; case S_IFBLK: printf("b"); break; case S_IFDIR: printf("d"); break; case S_IFCHR: printf("c"); break; case S_IFIFO: printf("p"); break; } } void file_mode(mode_t mode) { printf("%c",mode & S_IRUSR?'r':'-'); printf("%c",mode & S_IWUSR?'w':'-'); printf("%c",mode & S_IXUSR?'x':'-'); printf("%c",mode & S_IRGRP?'r':'-'); printf("%c",mode & S_IWGRP?'w':'-'); printf("%c",mode & S_IXGRP?'x':'-'); printf("%c",mode & S_IROTH?'r':'-'); printf("%c",mode & S_IWOTH?'w':'-'); printf("%c",mode & S_IXOTH?'x':'-'); } void user_name(uid_t uid) { struct passwd* pd = getpwuid(uid); printf(" %s",pd->pw_name); } void group_name(gid_t gid) { struct group * gp = getgrgid(gid); printf(" %s",gp->gr_name); } void show_time(time_t mtime) { struct tm * t = localtime(&mtime); printf(" %d月 %d %d:%d",t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min); } void list_file_stat(const char* path) { // 获取文件属性 struct stat buf; if(stat(path,&buf)) { perror("stat"); return; } // 显示文件类型 file_type(buf.st_mode); // 显示文件权限 file_mode(buf.st_mode); // 显示目录层数 printf(" %c",S_ISDIR(buf.st_mode)?'2':'1'); // 显示用户名 user_name(buf.st_uid); // 显示组名 group_name(buf.st_gid); // 显示字节数 printf(" %lu",buf.st_size); // 显示最后修改时间 show_time(buf.st_mtime); // 显示文件名 printf(" %s\n",path); } int main(int argc,const char* argv[]) { list_file_stat("dup.c"); }
相关文章推荐
- 做linux第四次实验,看错实验要求,花了一个下午自己模拟着实现一个ls命令。。。。
- Linux下ls命令的简单模拟实现
- [linux-c]week1:ls基础命令的实现
- [源码和文档分享]基于C++语言在Linux环境下模拟实现命令解释器
- Linux环境下模拟实现命令解释器
- Python实现Linux环境下的ls命令
- Linux中模拟shell实现ls命令(不加参数)
- Linux环境下模拟实现命令解释器
- 在linux环境中命令cd、ls、cp的功能及运用
- Linux环境下模拟实现进度条
- 实现Linux下的ls -l命令
- linux 下用 c 实现 ls -l 命令
- Linux下实现ls命令(-a -l -R)
- Linux下模拟ping命令的C代码实现
- ls命令的实现和原理 [linux演习]
- linux小白-基础命令-ls
- Linux环境下模拟实现进度条
- 在Linux环境下模拟实现sleep函数
- Linux环境下模拟实现sleep函数
- linux下实现ls -l命令