【Linux】第五章 linux 对目录和文件的读取

#include<sys/types.h>
#include<dirent.h>

DIR* opendir (const char * path ); //(获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)在失败的时候返回一个空的指针
struct dirent* readdir(DIR* dir_handle); //(循环读取dir_handle,目录和文件都读),读取opendir 返回值的那个列表

struct
dirent *readdir(DIR *dp); void rewinddir(DIR *dp); int closedir(DIR *dp); long telldir(DIR *dp); void seekdir(DIR *dp,long loc);
struct dirent   
{   
  long d_ino; /* inode number 索引节点号 */  
     
    off_t d_off; /* offset to this dirent 在目录文件中的偏移 */  
     
    unsigned short d_reclen; /* length of this d_name 文件名长 */  
     
    unsigned char d_type; /* the type of d_name 文件类型 */  
     
    char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */  
}  

d_type的具体数值:

enum
{ 
    DT_UNKNOWN = 0, 
 # define DT_UNKNOWN DT_UNKNOWN 
     DT_FIFO = 1, //一个命名管道,或FIFO
 # define DT_FIFO DT_FIFO 
     DT_CHR = 2, //字符设备
 # define DT_CHR DT_CHR 
     DT_DIR = 4, //目录
 # define DT_DIR DT_DIR 
     DT_BLK = 6, //块设备
 # define DT_BLK DT_BLK 
     DT_REG = 8, //常规文件
 # define DT_REG DT_REG 
     DT_LNK = 10, //符号链接
 # define DT_LNK DT_LNK 
     DT_SOCK = 12, //套接字
 # define DT_SOCK DT_SOCK 
     DT_WHT = 14 
 # define DT_WHT DT_WHT 
}; 
struct stat {   
  
        mode_t     st_mode;       //文件访问权限   
  
        ino_t      st_ino;       //索引节点号   
  
        dev_t      st_dev;        //文件使用的设备号   
  
        dev_t      st_rdev;       //设备文件的设备号   
  
        nlink_t    st_nlink;      //文件的硬连接数   
  
        uid_t      st_uid;        //所有者用户识别号   
  
        gid_t      st_gid;        //组识别号   
  
        off_t      st_size;       //以字节为单位的文件容量   
  
        time_t     st_atime;      //最后一次访问该文件的时间   
  
        time_t     st_mtime;      //最后一次修改该文件的时间   
  
        time_t     st_ctime;      //最后一次改变该文件状态的时间   
  
        blksize_t st_blksize;    //包含该文件的磁盘块的大小   
  
        blkcnt_t   st_blocks;     //该文件所占的磁盘块   
  
      };  

猜你喜欢

转载自www.cnblogs.com/vx-cg248805770/p/12061310.html