当前位置:  技术问答>linux和unix

stat函数为什么有时不能正确获取文件实际大小

    来源: 互联网  发布时间:2016-06-14

    本文导语:  UNIX下的C++程序中调用stat函数来获取文件。为什么有的时候获取出来的值和实际值不一样呢。然后我在程序加了一个判断 if(st_buf.st_size!=实际大小)  就再stat获取一遍大小,这次文件大小就对了。 各位有遇到过这样的...

UNIX下的C++程序中调用stat函数来获取文件。为什么有的时候获取出来的值和实际值不一样呢。然后我在程序加了一个判断
if(st_buf.st_size!=实际大小)  就再stat获取一遍大小,这次文件大小就对了。

各位有遇到过这样的情况吗?

|
我不是经常用,但是没有发现有类似问题。。

|


楼主可以提供一个可以重现的例子,可以让我们分析一下。
比如一个什么文件名?内容贴出来,出现了这个问题的。随便代码也贴来

|
这是 有可能的

比如 stat 和 du 一个文件 有可能大小不同

APUE有过说明  说是 文件里有空洞 就会有这种情况,不知道是不是你想知道的。

|
stat出来的结果和ls -l的结果是一样的.
会不会是这个文件还有其他进程在使用

|
Q. What is 'holes' in files? 


A. (By Andrew Gierth ) 


The issue of 'holes' in files is thus: 

Suppose a program creates a new file, seeks to a large offset, and then 
writes 1 byte. 

The file now consumes only 1 block of disk space, but appears to be large 
(both in the byte size returned by stat(), and to a program that reads it 
sequentially). The space that was never written to reads back as all 
zeros, but consumes no space. This is referred to as a 'sparse file'. 

The most common situation that causes these is use of the dbm package, 
which takes advantage of this ability. 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • #include<sys/stat.h> 中的stat.h文件到底在哪个目录下面?
  • stat取得文件信息的问题
  • unix中形如<sys/stat.h>头文件
  • 如何判断路径是否存在?stat?opendir?
  • 开源的统计应用程序 PHP Web Stat
  • 请问读/proc/stat的时候是否需要加锁,会不会读到错误数据?
  • 请问大家关于STAT硬盘的驱动在linux下!
  • 用stat的时候说storage size isn't know
  • 请问/proc/stat文件中第一行cpu 后面4个数字代表什么含义阿?
  • 请问/proc/stat文件是系统产生的吗?
  • linux mv cp 无法stat
  • STAT硬盘在LINUX下创建RAID5时,无法完成挂载?
  • c语言如何在创建一个文件的时候,其stat值为0200 ?
  • stat出错问题?
  • Oracle经验分享:GATHER_STATS_JOB 任务
  • 怎样在STAT硬盘上安装linux系统
  • stat()和fstat()
  • 请问读/proc/stat的时候是否需要加锁,会不会读到错误数据? iis7站长之家
  • 帮忙介绍下/proc/pid/stat
  • 请问进程的stat是D是如何产生的


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3