就是遍历一个目录下面的所有文件,显示信息

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的更多相关文章

  1. linux ls -l命令结果含义解析

    ls -l 中显示的内容如下: -rw-r--r--.  1 root root  192 Jan 30 09:55 text.txt - 10个字符确定不同用户能对文件干什么 - 第一个字符代表文件 ...

  2. 标准IO的简单应用,动静态库,读取系统时间并打印,模拟ls -l功能

    2015.2.27星期五,小雨 标准IO实现的复制功能: #include <stdio.h>#include <errno.h> #define N 64 int main( ...

  3. Linux 命令 ls -l

    一.ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名. Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便. 如果要使用此命令,可以作如下修改:打 ...

  4. ls -l 列表信息详解

    我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的文件和目录名列表.这个列表包含了文件的属性,所属用户,所属组,创建时间,文件大小等等信息.这些信息到底是什么意思呢? ...

  5. Linux ls -l内容详解

    ls -l是列出当前目录下所有文件信息 以下是实例: 具体的文字描述如下: 第1字段:  文件属性字段文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文 ...

  6. Linux下ll命令与ls -l

    还大三Linux课的债. 1.ll命令用于显示当前文件下非隐藏文件的详情 查询结果分为7栏: 1)如' -rw-r--r--' 表示三种用户对该文件的不同权限: r:可读:w:可写:x:可执行 其中第 ...

  7. Linux "ls -l"文件列表权限详解

    ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...

  8. 实现Linux下的ls -l命令

    基本实现了Linux下的ls -l命令,对于不同的文件显示不同的颜色和显示符号链接暂时没有实现: /************************************************** ...

  9. linux ls -l 详解

    转自:http://blog.csdn.net/sjzs5590/article/details/8254527 (原文转自http://hi.baidu.com/yzzcheng/item/1a21 ...

  10. [置顶] linux第二天,g++,gcc,ps,cat,sort,grep,kill,less,ls -l ,

    33.less sample.txt 分页输出文件内容到屏幕 34./search content (搜索内容) 可以将文档中有searchcontent 的行输出到屏幕 35.grep scienc ...

随机推荐

  1. Mongodb中在已有Colloection插入/更新相关域值

    [{ "confident" : "no", "score" : 0.327355, "label" : "/ ...

  2. Chrome 插件下载

    这里推荐几个下载chrome扩展的网站 http://www.cnplugins.com/index.html 分类全,没有搜索 http://www.chromein.com/ 有搜索,推荐使用 h ...

  3. int('x', base)中的base参数

    >>> int('12', 16) 16表示'12'就是16进制数,int()要将这个16进制数转化成10进制.

  4. 关于dyld: Library not loaded

    在接入智凡迪的sdk过程中,遇到以下问题: dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework   Referen ...

  5. Java 堆和栈 垃圾回收 2015/9/16

    http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html Java内存: 1.堆内存:基本类型的变量和对象的引用变量. 2.栈内存:由ne ...

  6. 快速学习MD5的方法

    MD5加密的Java实现 在各种应用系统中,如果需要设置账户,那么就会涉及到存储用户账户信息的问题,为了保证所存储账户信息的安全,通常会采用MD5加密的方式来,进行存储.首先,简单得介绍一下,什么是M ...

  7. 1153 Decode Registration Card of PAT (25 分)

    A registration card number of PAT consists of 4 parts: the 1st letter represents the test level, nam ...

  8. CCF 集合竞价

    题目: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s ...

  9. Ecel 粘贴图片并调整大小,移到底层

    Sub Click() ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.ScaleWidth 1.4, msoTrueSelection. ...

  10. drone 学习三 条件步骤

    1. 基本格式 pipeline: slack: image: plugins/slack channel: dev + when: + branch: master 2. 几种条件类型 a. bra ...