实现ls -l
就是遍历一个目录下面的所有文件,显示信息
Linux下面有点绕
要通过 opendir打开目录,返回一个DIR结构
用readdir来读DIR结构,返回目录下面的第一项,是个dirent结构体,再次调用readdir回读到第二项,以此类推
dirent结构体里面有该文件的文件名,通过stat可以获得该文件的详细信息。
注意stat结构要malloc一下,不然后segment fail??好像是这个单词。可能是没有分配的话指针会乱指。
读写执行权限在mode_t里面,没有直接输出的函数,要自己写一个,判断有没有该权限,用与运算,不是判等。
其它信息都在stat里面,这里只输出了st_mode。

#include<dirent.h>
#include<stdio.h>
#include<sys/stat.h>
#include <fcntl.h> void show(mode_t mode){ if(mode&S_IRUSR)
printf("r");
else
printf("-"); if(mode&S_IWUSR)
printf("w");
else
printf("-"); if(mode&S_IXUSR)
printf("x");
else
printf("-"); /*********Group********/ if(mode&S_IRGRP)
printf("r");
else
printf("-"); if(mode&S_IWGRP)
printf("w");
else
printf("-"); if(mode&S_IXGRP)
printf("x");
else
printf("-"); /**********Else***************/ if(mode&S_IROTH)
printf("r");
else
printf("-"); if(mode&S_IWOTH)
printf("w");
else
printf("-"); if(mode&S_IXOTH)
printf("x");
else
printf("-"); printf("\n"); } int main(int argc,char * argv[]){ DIR *dp;
struct dirent* dir;
struct stat * buf = (struct stat *)malloc(sizeof(struct stat));
int fd; dp = opendir(argv[]); while((dir = readdir(dp))!=NULL){ printf("%s ",dir->d_name);
//fd = open(dir->d_name,O_RDWR);
//fstat(fd,buf);
stat(dir->d_name,buf);
show(buf->st_mode); } printf("Done!!!!\n"); }
实现ls -l的更多相关文章
- linux ls -l命令结果含义解析
ls -l 中显示的内容如下: -rw-r--r--. 1 root root 192 Jan 30 09:55 text.txt - 10个字符确定不同用户能对文件干什么 - 第一个字符代表文件 ...
- 标准IO的简单应用,动静态库,读取系统时间并打印,模拟ls -l功能
2015.2.27星期五,小雨 标准IO实现的复制功能: #include <stdio.h>#include <errno.h> #define N 64 int main( ...
- Linux 命令 ls -l
一.ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名. Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便. 如果要使用此命令,可以作如下修改:打 ...
- ls -l 列表信息详解
我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的文件和目录名列表.这个列表包含了文件的属性,所属用户,所属组,创建时间,文件大小等等信息.这些信息到底是什么意思呢? ...
- Linux ls -l内容详解
ls -l是列出当前目录下所有文件信息 以下是实例: 具体的文字描述如下: 第1字段: 文件属性字段文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文 ...
- Linux下ll命令与ls -l
还大三Linux课的债. 1.ll命令用于显示当前文件下非隐藏文件的详情 查询结果分为7栏: 1)如' -rw-r--r--' 表示三种用户对该文件的不同权限: r:可读:w:可写:x:可执行 其中第 ...
- Linux "ls -l"文件列表权限详解
ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...
- 实现Linux下的ls -l命令
基本实现了Linux下的ls -l命令,对于不同的文件显示不同的颜色和显示符号链接暂时没有实现: /************************************************** ...
- linux ls -l 详解
转自:http://blog.csdn.net/sjzs5590/article/details/8254527 (原文转自http://hi.baidu.com/yzzcheng/item/1a21 ...
- [置顶] linux第二天,g++,gcc,ps,cat,sort,grep,kill,less,ls -l ,
33.less sample.txt 分页输出文件内容到屏幕 34./search content (搜索内容) 可以将文档中有searchcontent 的行输出到屏幕 35.grep scienc ...
随机推荐
- HOG特征简述
---恢复内容开始--- 参考文献:http://blog.csdn.net/zouxy09/article/details/7929348 分为几步: 1)cell:有n×m个像素组成,计算每个像素 ...
- learn go defer
package main // 参考文档: // https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.4.md im ...
- Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?
- Cannot setup mail box on Android
Error: “You don’t have permission to sync with this server” Solution: “You have 10 phone partnershi ...
- test20181223
Written with StackEdit. T1 取石子(stone) Description 有\(n\)堆石子,第\(i\)堆有\(x_i\)个. \(Alice\)和\(Bob\)轮流取石子 ...
- 20179223《Linux内核原理与分析》第四周学习笔记
补交第三周作业 完成一个简单的时间片轮转多道程序内核 1.使用实验楼的虚拟机打开shell,用cd LinuxKernel/linux-3.9.4进入linux-3.9.4. 2.执行命令qemu - ...
- Python学习-购物车程序
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- input type = number 去除上下箭头,禁用滚轮事件(默认的自带滚轮加减数字)
<style type="text/css"> /*盒子大小从边框开始计算*/ html * { box-sizing: border-box; } /*解决模态框抖动 ...
- 【spring源码学习】spring集成orm数据框架
[一]简易的数据源配置 (1)配置文件 <!--springJdbcTemplemate数据操作配置信息 --> <bean id="driver" class= ...
- 安装xamp之后,appach、mysql等问题的总结
问题一:无法启动的问题 如果他们无法启动,大多数情况是端口号被占用. 首先就是查看端口号:点击“netstart“按钮查看端口号的使用详情 如果被占用就点击"config”按钮,进行端口号的 ...