模拟ls -l命令简易代码demo
来源:互联网 发布:学java跟不上 编辑:程序博客网 时间:2024/05/22 04:39
话不多说 上代码:
/*************************************************************************> File Name: ls-l.c> Author: > Mail: > Created Time: Wed 08 Mar 2017 05:32:08 AM PST ************************************************************************/#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<dirent.h>#include<pwd.h>#include<grp.h>#include<string.h>#include<time.h>#include<sys/stat.h>// a a/b a/c cur:a// ls a:b,c// ls b:XXX// ls a/b:d// cd a; ls b:dvoid printtype(int mode){ if(S_ISREG(mode)) putchar('-'); else if(S_ISDIR(mode)) putchar('d'); else if(S_ISLNK(mode)) putchar('l'); else if(S_ISFIFO(mode)) putchar('p'); else if(S_ISSOCK(mode)) putchar('s'); else if(S_ISCHR(mode)) putchar('c'); else if(S_ISBLK(mode)) putchar('b'); else putchar('@');}void printaccess(int mode){//rwxrwxrwx const char* acc ="rwx"; int i; for(i = 0;i<9;i++,mode<<=1)//mode = mode<<1 putchar(mode&0400?acc[i%3]:'-');}void showdetail(const char* name){ struct stat s; lstat(name,&s); printtype(s.st_mode);//打印类型 printaccess(s.st_mode&0777);//打印权限 printf("%2d",s.st_nlink); printf("%7s",getpwuid(s.st_uid)->pw_name); printf("%7s",getgrgid(s.st_gid)->gr_name); printf("%5lu",s.st_size); char buff[20]; strftime(buff,sizeof(buff),"%F %T",localtime(&s.st_mtime)); printf("%20s %s\n",buff,name);}void listDetial(void){ DIR* p =opendir(".");//已经设为当前目录,打开即可 if(NULL==p) { perror("opendir"); return; } struct dirent* q=NULL; while((q=readdir(p))!=NULL) { if(q->d_name[0]=='.') continue; //列出详细信息 showdetail(q->d_name); }}int main(int argc,char* argv[]){ if(argc>2) { printf("%s [目录路径]\n",argv[0]); return 0; } if(argc==2)//命令行带了目录路径 { if( chdir(argv[1])==-1)//设为当前目录 { perror("错误"); return -1; } } listDetial();//列出相信信息}
0 0
- 模拟ls -l命令简易代码demo
- 模拟linux下的ls -l命令
- ls -l 命令详解
- ls -l命令详解
- ls -l 命令实现
- ls -l命令详解
- ls -l命令详解
- 模拟实现ls-l进阶
- ls -l命令结果详解
- linux ls -l 命令 详解
- linux ls -l 命令 详解
- linux ls -l 命令 详解
- Linux ls -l 命令详解
- linux下ls-l命令
- ls -l命令解释
- Linux 编写ls -l 命令
- linux ls -l命令详解
- (myls)模拟" ls "命令
- pl/sql developer 查询语句无法使用中文条件
- L1-030. 一帮一
- 1.1. Implementing a RouteBuilder Class
- mysqldump导入导出数据库总结;MySQLDump在使用之前一定要想到的事情
- Calculate the expression
- 模拟ls -l命令简易代码demo
- Volley源码分析
- qq项目,,实现了加好友,,和单聊,,
- 在学习zookeeper时候遇见了log4j错误No appenders could be found for logger
- Centos 6 下配置nginx 反向代理Google
- Python实现简单网络爬虫--转自极客头条
- Mac下安装Memcache
- Python如何搜索模块
- Mvp模式在Android开发中的应用