Linux操作系统中文件结构stat中st_size的说明以及对于文件中洞(Holes)的理解
2023-09-27 14:22:03 时间
文件stat结构体中st_size成员
对于所有的文件类型,st_size成员对其中的普通文件、目录以及符号链接有实在的意义。其中,对于普通文件而言,st_size记录了该文件的实际大小;对于目录而言,st_size的值为16或者512的倍数;对于符号链接而言,st_size的值为符号链接所指的路径的长度。例如lib->usr/lib,则st_size的值即为7。
在某些Unix系统中,st_size的值对pipe等文件也有意义,表示当前pipe中可以读取的字节数。
Holes产生的原因
当我们使用lseek函数,在超出文件的原文件尾的某个位置处开始写入字节时,为了节省磁盘空间,它们之间未被写入数据的空间并未被文件系统完全分配。这个时候,就会造成文件的大小,与文件所占用的磁盘空间产生大小不一致的情况。我们使用ls -l命令可以看到文件的大小。而使用du -s查看文件的磁盘占用时,就会发现他们存在着不一致的情况,有兴趣的读者可以自己在Linux下面进行试验。
如果我们在hole中的某个位置使用read函数进行读操作时,函数会返回0。
需要注意的一点是,当我们使用cat指令复制带有hole的文件时,复制得到的文件中,这些hole会被0所填充,使文件的磁盘占用空间与其实际大小相匹配。
作者:Chenny Chen
出处:http://www.cnblogs.com/XjChenny/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载:http://www.cnblogs.com/XjChenny/archive/2012/12/10/2811995.html
相关文章
- Linux-鸟菜-5-文件权限
- linux系统/etc/init.d目录下的开机自启脚本
- Linux 文件权限说明、同组用户、文件所有者、其他用户、管理员
- 六家入围国家机关采购项目供应商-国产Linux操作系统
- linux Command sysbench 线程压力测试工具
- 如何在 Linux 中压缩及解压缩 .bz2 文件
- Linux: gnupg2
- linux删除乱码文件
- 【Linux操作系统】shell和文件权限
- Linux命令06 - - wget 下载网络文件
- 《精通Linux设备驱动程序开发》——1.2 GNU Copyleft
- 《Linux防火墙(第4版)》——2.6 私有网络服务VS公有网络服务
- linux 系统自带的 messages 和 /tmp 下文件清理功能 介绍
- Linux下快速拷贝单个大文件的秘诀
- 使用Linux输出重定向将debug信息和ERROR信息分离
- Linux系统锁定关键文件
- 【嵌入式Linux学习】7、多文件编译输出Hello Linux!
- 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- Linux声卡驱动移植和測试
- Linux基础第四课——文件操作
- linux中 rm -rf删不掉文件解决办法
- 大数据技术基础实验二:Linux基础——常用基本命令与文件操作
- Linux下汇编语言学习笔记36 ---