linux文件读写 c语言,Linux 下 C语言大文件读写(大于4G)
以下的做法整理自论坛上的帖子。
如何create大文件
要大就非常大,1T吧。
有两种方法:
一.dd
dd if=/dev/zero of=1T.img bs=1G seek=1024 count=0
bs=1G表示每一次读写1G数据,count=0表示读写0次,seek=1024表示略过1024个Block不写,前面block size是1G,所以共略过1T!
这是创建大型sparse文件最简单的方法。
二.ftruncate64/ftruncate
如果用系统函数就稍微有些麻烦,因为涉及到宏的问题。我会结合一个实际例子详细说明,其中OPTION标志的就是测试项。
文件sparse.c:
//OPTION 1:是否定义与大文件相关的宏
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#include
#include
#include
#include
#include
#include
#define FILENAME "bigfile"
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
int main(int argc, char **argv)
{
int fd, ret;
off_t offset;
int total = 0;
if ( argc >= 2 )
{
total = atol(argv[1]);
printf("total=%d\n", total);
}
//OPTION 2:是否有O_LARGEFILE选项
//fd = open(FILENAME, O_RDWR|O_CREAT|O_LARGEFILE, 0644);
fd = open(FILENAME, O_RDWR|O_CREAT, 0644);
if (fd < 0) {
perror(FILENAME);
return -1;
}
offset = (off_t)total *1024ll*1024ll*1024ll;
printf("offset=%ld\n", offset);
//OPTION 3:是否调用64位系统函数
//if (ftruncate64(fd, offset) < 0)
if (ftruncate(fd, offset) < 0)
{
printf("[%d]-ftruncate64 error: %s\n", errno, strerror(errno));
close(fd);
return 0;
}
close(fd);
printf("OK\n");
return 0;
}
测试环境:
linux:/disk/test/big # gcc --version
gcc (GCC) 3.3.5 20050117 (prerelease) (SUSE Linux)
linux:/disk/test/big # uname -a
Linux linux 2.6.11.4-20a-default #1 Wed Mar 23 21:52:37 UTC 2005 i686 i686 i386 GNU/Linux
测试结果
linux文件读写 c语言,Linux 下 C语言大文件读写(大于4G)相关推荐
- windows下快速创建大文件
windows下快速创建大文件 F:/>fsutil file createnew wu 20480000000 已创建文件 F:/wu 也可以使用API SetEndOfFile
- 关于tomcat环境下上传大文件遇到的问题及解决办法
转载自:http://blog.csdn.net/tqwwilliam/article/details/7108247 问题描述: 关于tomcat环境下上传大文件遇到的问题及解决办法 解决方案: 1 ...
- 4种大文件传输工具和软件,用于共享大文件
无论是个人还是与团队一起工作,大文件传输软件和网站都能协助提高工作效率.有效地管理工作内容.疫情原因有时我们不得不居家办公,在这种情况下可以分享文件的工具就显得尤为重要. 每个公司都需要一个文件传输软 ...
- pandas使用to_feather函数将dataframe保存为feather文件(需要依赖pyarrow包)提升大文件读取效率、pandas使用read_feather函数读取feather文件
pandas使用to_feather函数将dataframe保存为feather文件(需要依赖pyarrow包)提升大文件读取效率.pandas使用read_feather函数读取feather文件. ...
- linux 下 find 查找大文件
#!/bin/bash #查找占用空间比较大的文件以及目录#查找占用空间比较大的目录,从根开始查找, 只显示一层, 对结果排序 du -h --max-depth=1 / | sort -nr#查找占 ...
- Linux复制指定目录及子目录下特定类型的文件
方法一:通过完全复制然后删除指定类型的文件完成 Step1 使用cp命令复制所有文件 cp -r test/ test2 将测试目录test下所有内容完全复制到test2 Step2 组合使用find ...
- linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种: 存储巨大的文件,比如视频.高清图片等. 利用GridFS可以简化需求. GridFS会直接利用已经建立的 ...
- Linux、Windows都适用的跨国传输、大文件传输软件:飞驰传输
随着"走出去"战略的实施,中国越来越多的企业走向国外,跨国企业将是大的潮流和趋势.跨国企业的分支机构遍及全球各地,员工来自多个国家,使用不同的语言.由于各地IT基础设施建设水平和使 ...
- Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法
.htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置. 通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误 ...
- java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
作者 | 中华石杉 责编 | 伍杏玲 本文经授权转载石杉的架构笔记(ID:shishan100) 这篇文章我们来看看,世界上最优秀的分布式文件系统HDFS,是如何对超大文件的上传做性能优化的? 首先, ...
最新文章
- linux md5sum 的用法(转)
- Hibernate中自动生成数据库表的两种方式
- Redis集群:sharding策略
- 软件项目管理的75条建议
- Mac下提示APP已损坏,打不开,请移至废纸篓
- 王者荣耀服务器维护5.3,王者荣耀3月2日体验服停机更新公告(5)
- Redis命令参考【EXPIRE】
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
- 谈谈我的session跨域处理方法
- 系统学习NLP(十五)--seq2seq
- 计算机高等数学试题及答案,北大计算机系考研_历年高等数学真题附答案
- 使用HTML制作在线电子时钟,用HTML5制作数字时钟的教程
- R语言中dim函数_R语言在医学统计中的应用基础教程
- centos7下修改mysql8表名_CentOS7系统下修改mysql8.0版本密码
- 一些著名软件的开发语言概述
- 第十二届蓝桥杯省赛一等奖国赛一等奖经验总结
- 职业梦想是计算机的英语作文,梦想的职业英语作文
- 大数据产业链包括哪几个环节,具体包含哪些内容
- 选购手机时,运行内存和处理器先考虑哪个?来说说你的观点
- Quartz教程六--CronTrigger