您的位置:首页 > 运维架构 > Linux

在Linux下处理超过2GB的大文件

2009-12-05 21:15 633 查看
在Linux操作系统下的open,lseek,fstat等函数只能操作大小小于2GB的文件。如果用户需要处理的文件大于2GB,则必须使用另外一组函数,即open64,lseek64,fstat64等函数。这些函数能够创建或者打开超过2GB的文件,获取这些大文件的大小等等。

必须注意的是:如果代码中使用到这些函数,应该添加编译器选项:-D_LARGEFILE_SOURCE

例如,下面给出的代码用于获取大小超过4GB的文件的大小(长度):

#include <unistd.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
int main(int argc,char*argv[])
{
if (argc!=2)
{
printf("Usage: <Program Name> input_file_path/n");
return 0;
}
const char*path=argv[1];
int fd=open64(path,O_RDONLY);
if (fd==-1)
{
printf("Can not open %s/n",path);
return 0;
}
//获取文件的大小
off64_t size;
struct stat64 sbuf;
if (fstat64(fd,&sbuf)<0)
{
close(fd);
printf("fstat failed/n");
return 0;
}
size=sbuf.st_size;
printf("File size is %llx/n",size);
close(fd);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: