博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
目录流
阅读量:4084 次
发布时间:2019-05-25

本文共 1405 字,大约阅读时间需要 4 分钟。

部分摘自:

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

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

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

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

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

 

 

转载地址:http://rgani.baihongyu.com/

你可能感兴趣的文章
旧瓶新酒之ngx_lua & fail2ban实现主动诱捕
查看>>
require() 源码解读
查看>>
linux rpm、yum以及源码安装安装
查看>>
FreeLink开源呼叫中心设计思想
查看>>
NGUI研究之制作转圈的技能CD特效
查看>>
SQL窗体函數一例
查看>>
Restart
查看>>
暑假第二十一测
查看>>
Redux生态系统
查看>>
详解Java中super的几种用法并与this的区别
查看>>
错误:程序“XXX”不包含适合于入口点的静态“Main”方法
查看>>
MySQL的存储引擎
查看>>
LAMP 环境搭建
查看>>
2018最新cocoapods详细安装和使用
查看>>
主席树——求静态区间第k大
查看>>
vue set
查看>>
【转】Java基础——成员变量、局部变量和静态变量的区别
查看>>
不要因为不懂android应用开发就迷惑更多的问题
查看>>
使用QUIC
查看>>
c++的字节对齐
查看>>