32位Linux下操作64位(4G以上)大文件的总结
来源:互联网 发布:人工智能研究方向 编辑:程序博客网 时间:2024/05/22 02:14
自http://hi.baidu.com/ah__fu/item/502cb335e7e1dff7e6bb7a7e
1、包含所有头文件以前,先定义这些宏:
#ifndef __USE_FILE_OFFSET64#define __USE_FILE_OFFSET64
#endif
#ifndef __USE_LARGEFILE64
#define __USE_LARGEFILE64
#endif
#ifndef _LARGEFILE64_SOURCE
#define _LARGEFILE64_SOURCE
#endif
2、使用open打开文件的时候,加上O_LARGEFILE标志:
int fd = open("test.dat", O_RDWR|O_APPEND|O_CREAT|O_LARGEFILE, 0666);
read(), write()等与一般的用法一致,无变化。
3、注意lseek()函数,文件未超过2G的时候,一切工作良好;
文件超过2G后,调用返回-1,errno为EOVERFLOW (errno=75, msg=Value too large for defined data type)
需要使用lseek64()代替lseek()。很奇怪,定义了宏以后,并未自动将lseek变成lseek64。(知道原因的朋友可以教教我)
4、注意stat()函数,传入的文件如果在2G内,工作良好;
传入的文件如果超过2G,返回-1, errno为EOVERFLOW (errno=75, msg=Value too large for defined data type)
应该这样使用:struct stat64 st; stat64("file", &st);
5、为了保险,建议所有操作文件的函数都是用支持64位大文件的。否则当文件超过2G后,难免会出现什么未知的异常
- 32位Linux下操作64位(4G以上)大文件的总结
- 32位Linux下使用2G以上大文件的几个相关宏的关系
- 64位系统下操作注册表的注意事项
- linux下操作大于2G文件
- 如何使32位Linux支持4G以上内存
- 32位和64位ORACLE下操作GOLDENGATE过程记录
- Linux下操作带空格的文件
- 4G以上(含4G)内存与32位Linux系统
- 如何让32位Oracle支持4G以上内存
- 32位操作系统下4G以上内存应用程序的开发
- Windows Server 2003的32位企业版支持4G以上内存
- linux下操作远程主机文件的几种方法
- 在linux下操作pcap文件的各种方法整理
- linux环境下操作特大文件
- linux下操作zip文件命令大全
- Linux - Linux下操作Tomcat的命令
- 让Linux32位支持4G以上内存
- C#下操作ini文件的封装
- 黑马程序员_IO流
- 大话设计模式——简单工厂模式
- 关于一本jquery不好的书
- - ORA-00942: 表或视图不存在 Hibernate Oracle
- 开始使用QML编程(2)
- 32位Linux下操作64位(4G以上)大文件的总结
- HTML中ID与NAME的区别
- socket基础1
- 网页制作精华代码大全
- EJB的相互调用
- 一个带逻辑判断的sql语句
- BloomFilter——大规模数据处理利器
- Openfire 插件开发 知识集
- do{}while(0)的使用(COPY)