【二十六】 Linux网络编程——模仿linux的ls命令实现
来源:互联网 发布:js 数组 查找 编辑:程序博客网 时间:2024/05/02 01:59
【二十六】 Linux网络编程——模仿linux的ls命令实现
/*my_ls.c*/#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <time.h>#include <pwd.h>#include <grp.h>#include <dirent.h>int display_file(char *argv,char *fname){ struct stat buf;struct tm *tp;if (lstat(argv, &buf) < 0){perror("fail to lstat");return -1;}switch (buf.st_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;}int n;for (n=8; n>=0; n--){if (buf.st_mode & (1 << n)){switch (n % 3){case 2 :printf("r");break;case 1 :printf("w");break;case 0 :printf("x");}}else{printf("-");}}printf("%2d", buf.st_nlink);printf(" %s", getpwuid(buf.st_uid)->pw_name);printf(" %s", getgrgid(buf.st_gid)->gr_name);printf(" %8ld", buf.st_size);tp = localtime(&buf.st_mtime);printf(" %4d-%d-%d %2d:%2d", tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday, tp->tm_hour, tp->tm_min);printf(" %s\n", fname);return 0;}int main(int argc,char *argv[]){ struct stat buf; DIR *mydir; struct dirent *dirp; char path[256];if (argc < 2){printf("Usage : %s <file>\n", argv[0]);return -1;} if(lstat(argv[1],&buf)<0) { perror("fail to lstat"); return -1; } if((buf.st_mode & S_IFMT)==S_IFDIR){ mydir=opendir(argv[1]); while((dirp=readdir(mydir))!=NULL) { if(dirp->d_name[0]=='.') continue; sprintf(path,"%s/%s",argv[1],dirp->d_name); display_file(path,dirp->d_name); } } else { display_file(argv[1],argv[1]); } return 0;}
- 【二十六】 Linux网络编程——模仿linux的ls命令实现
- 【二十五】 Linux网络编程——模仿Ping命令的实现
- 模仿linux命令ls
- Linux编程——ls命令的实现
- linux编程:ls命令的简单实现
- 使用linux-c编程实现简单的ls命令
- linux ls命令实现
- linux命令实现:ls
- Linux ls命令实现
- linux的ls命令详解(二)
- linux命令——ls
- Linux——ls命令
- Linux命令——ls
- Linux命令简介—ls
- Linux命令的实现 -- ls pwd cd
- Linux下ls命令的实现
- Linux下ls命令的简单实现
- Linux ls -l命令的实现
- 【二十五】 Linux网络编程——模仿Ping命令的实现
- SQL语句
- anrdroid+unity游戏开发之c#一些常用“方法”
- Java_11_11课堂总结
- ADA程序实例(面向对象特性之多态)
- 【二十六】 Linux网络编程——模仿linux的ls命令实现
- XML
- Java_11_14课堂总结
- 基于DirectShow视频及图片捕获软件的开发
- JSTL简介
- 国际化动态文件和其他标签的实例应用
- Java_11_15课堂总结
- 大文本和二进制操作
- 【二十三】 Linux网络编程——广播与组播