当前位置: 技术问答>linux和unix
linux下如何取得大文件的大小
来源: 互联网 发布时间:2016-12-07
本文导语: 我现在在linux下要取得文件大小操作,文件一般有3-6G大小,我使用 off_t getFileSize(const char *pathname) { struct stat stat_buf; stat(pathname, &stat_buf); return stat_buf.st_size; } 要取得文件大小时出错: stat er...
我现在在linux下要取得文件大小操作,文件一般有3-6G大小,我使用
off_t getFileSize(const char *pathname)
{
struct stat stat_buf;
stat(pathname, &stat_buf);
return stat_buf.st_size;
}
要取得文件大小时出错:
stat error: Value too large for defined data type
我编译和运行的环境是
Linux KD1 2.6.18-128.4.1.el5xen #1 SMP Tue Aug 4 21:33:24 EDT 2009 i686 i686 i386 GNU/Linux
我分析是因为我使用的32位系统只能读出最大4G的文件,而struct stat 结构中off_t 在系统中又是定义为有符号的long型,所以只能得到小于2G文件的大小。
请问有没有别的方法可以取得这种大文件的大小?
off_t getFileSize(const char *pathname)
{
struct stat stat_buf;
stat(pathname, &stat_buf);
return stat_buf.st_size;
}
要取得文件大小时出错:
stat error: Value too large for defined data type
我编译和运行的环境是
Linux KD1 2.6.18-128.4.1.el5xen #1 SMP Tue Aug 4 21:33:24 EDT 2009 i686 i686 i386 GNU/Linux
我分析是因为我使用的32位系统只能读出最大4G的文件,而struct stat 结构中off_t 在系统中又是定义为有符号的long型,所以只能得到小于2G文件的大小。
请问有没有别的方法可以取得这种大文件的大小?
|
加入
或者编译时加入-D_FILE_OFFSET_BITS=64
试试
如果还不行,怀疑和时间戳有关。
#define _FILE_OFFSET_BITS 64
或者编译时加入-D_FILE_OFFSET_BITS=64
试试
如果还不行,怀疑和时间戳有关。
|
试试stat64()