码迷,mamicode.com
首页 > 其他好文 > 详细

opendir函数和readdir函数内涵及用法

时间:2019-02-03 14:00:42      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:str   blog   ldd   open()   win   返回值   ext2   存在   tor   

工作中遇到奇怪的事,加载增量的时候加载不上。于是开始分析原因,log里边没有任何错误信息,只有加载完成的标志。增量的数据在目录里边是存在的,但是显示的目录大小却不是4096,而是17,不知道为什么。后来gdb调试,发现没有取到对应的增量的文件夹目录。而这是用一个函数GetChildDir()来实现的。这个函数里边调用了c的函数:opendir函数和readdir函数。于是开始研究这两个函数。

==================================

 

1. 发现 linux 大部分的目录 都是4096(linux).

一般情况下,HDD磁盘最小的管理单位是扇区(Sector,也叫Unit或者Block),扇区的大小是512Bytes,但Linux一次I/O是8个扇区即4096Bytes,因此Linux(准确的说是ext2/ext3等文件系统)存取文件的最小单位即使4096Bytes(=8个Blocks)(Windows的NTFS好像是1K即2个Blocks)。而 目录 是特殊文件,OS初始分配8个Blocks,且size也即是4096Bytes,这与普通文件(Regular file)不同,普通文件的size是给予文件内容计算的,但是实际占用的磁盘空间总是是4096的倍数。


2. opendir函数

头文件:#include <sys/types.h>  #include <dirent.h>

函数:DIR *opendir(const char *name);   [关于DIR介绍:http://blog.csdn.net/u012349696/article/details/50083787]

含义: opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接下来对目录的读取和搜索都要使用此返回值.



opendir函数和readdir函数内涵及用法

标签:str   blog   ldd   open()   win   返回值   ext2   存在   tor   

原文地址:https://www.cnblogs.com/simplepaul/p/10350232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!