zoukankan      html  css  js  c++  java
  • 实现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("
    ");
    
    
    }
    
    
    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[1]);
    
        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!!!!
    ");
    
        
    
    
    
    
    
    
    
    }
  • 相关阅读:
    Java的值传递机制
    面向对象
    java中static关键字的作用
    方法的重载和重写
    this和super的用法
    Java中关于return的理解
    java经典的内存图 (数据结构)
    java IO最让初学者误解的取名方式
    UDP 与 TCP简单入门理解示例
    Shiro简单入门
  • 原文地址:https://www.cnblogs.com/wzben/p/5456969.html
Copyright © 2011-2022 走看看