linux下ls命令的编写
来源:互联网 发布:行业精英知乎 编辑:程序博客网 时间:2024/05/15 01:48
ubuntu 14.04.2
ls命令用来读取目录,工作方式如下:
open directory
read directory -end of dir?
display file info |
close directory<———————
与普通文件不同的是,目录文件永远不为空。每个目录至少包含两个特殊的项‘.’和‘..’,其中’.’代表当前目录,‘..’代表上一级目录。因此,”cd ..”命令会返回上一级目录。
如何读取目录内容?
readdir函数
使用man readdir命令可以看到,这个函数在dirent.h里面声明(user/include/dirent.h),用来读取目录中的记录,返回一个指向当前目录记录的指针struct dirent* ,这个结构体具体是:
struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* not an offset; see NOTES */ unsigned short d_reclen; /* length of this record */ unsigned char d_type; /* type of file; not supported by all filesystem types */ char d_name[256]; /* filename */};
其中,d_name用来存放文件名,有了它我们就可以编写简单的ls命令,读取当前目录下的文件名了。具体过程与从文件读取数据类似,opendir打开一个目录,readdir读取内容,closedir关闭目录
#include <stdio.h>#include <sys/types.h>#include <dirent.h>void do_ls(char[]);main(int ac,char* av[]) { if(ac == 1) do_ls("."); else while( --ac){ printf("%s:\n",* ++av); do_ls( *av); }}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) printf("%s\n",direntp -> d_name); closedir(dir_ptr);}}
参考文献 《Linux/unix编程实践教程》
0 0
- linux下ls命令的编写
- linux下ls命令的编写
- linux下的ls命令
- Linux下的ls命令
- Linux 下的ls命令
- 自己编写的linux ls命令
- C 语言的编写的windows下 类似linux 的 ls(list) 命令.
- Linux 编写ls -l 命令
- 模拟linux下的ls -l命令
- Linux下ls命令的实现
- Linux下ls命令的简单实现
- linux下的 ls 和 ll 命令
- 实现Linux下的ls命令
- 实现linux下的ls命令
- linux下ls.c编写
- linux 的ls 命令
- linux 的ls 命令
- Linux的ls命令
- android 获得ToolBar中title的间距以及获得控件宽高
- Learning to Rank 简介
- github删除仓库
- 使用SwiftyJSON解析JSON
- SHOW_SPACE
- linux下ls命令的编写
- Logstash,Fluentd, Logtail比较
- C语言中的static和extern
- VS2012 opencv2.4.13+MFC打开一张指定位置的图片
- HTML实现图片的定向移动
- MySQL学习笔记 -- day04 多表查询
- HTML 基础
- LNMP环境搭建!!!
- ~/.bashrc 配置