zoukankan      html  css  js  c++  java
  • Linux操作系统中文件结构stat中st_size的说明以及对于文件中洞(Holes)的理解

    文件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 

     
  • 相关阅读:
    Android studio测试软件——Monkey学习及运用
    MockPlus原型设计介绍
    MockPlus,一款好用的原型设计软件
    44道JavaScript难题 ---- 送命题
    使用JSONP实现跨域
    XML-RPC简单理解与博客园的MetaWeblog协议
    新型冠状病毒防控知识问答
    树莓派搭建个人服务器
    树莓派也跑Docker和.NET Core
    BugNet使用指南
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/5742863.html
Copyright © 2011-2022 走看看