目录流

部分摘自:https://blog.csdn.net/hou512504317/article/details/46381641

我觉得写得很不错,一下子弄懂了为什么有目录流。

-------------------------------------------------------------------------------------------------------------------------------

“一切都是文件”,目录也是文件,即目录文件。

目录当然也是特殊的文件,里面存放的信息是子文件相关的信息。具体怎么存储可以不太关注。

ext3/4 文件系统下链式的存储结构。

在应用开发中,目录和文件一样,有目录流的概念。(这就让我理解为什么讲IO编程时讲stat这些函数了,之前没有理解千万不要不了了之,真正探究清楚,是会有收获的,那感觉讲道理应该用管理普通文件的函数管理目录文件就可以了啊,为什么还专门弄个管理目录的?不过文件IO都是基于文件描述符的,标准IO是基于流的,)

fopen opendir

fread/…. readdir

ftell telldir

fseek seekdir

rewind rewinddir

fwrite mkdir/rmdir

fclose closedir

当前的工作路径的问题。

DIR *opendir(const char *name); //打开给定路径下的目录,返回目录流

DIR *fdopendir(int fd);

int closedir(DIR *dirp);

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

int readdir_r(DIR *dirp, struct dirent *entry, structdirent **result);

这个函数每执行一次,返回一个目录条目(就是一个子文件或者子目录的信息),当结束后,返回

NULL,并且向下指向下一个目录条件。

struct dirent:

On Linux, the dirent structure is defined as follows:

struct dirent {

ino_t d_ino; /* inode number */ //在当前文件系统下,这个文件的惟一编号

off_t d_off; /* offset to the next dirent */

unsigned short d_reclen; /* length of this record */

unsigned char d_type; /* type of file; not supported //类型,并不是所有的系统支持

by all file system types */

char d_name[256]; /* filename */ //子文件或者子目录名

};

文件类型:普通文件,目录文件,链接文件,字符设备文件,块设备文件,socket,管道文件。

#define S_IFSOCK 0140000

#define S_IFLNK 0120000

#define S_IFREG 0100000

#define S_IFBLK 0060000

#define S_IFDIR 0040000

#define S_IFCHR 0020000

#define S_IFIFO 0010000
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值