32位Linux下使用2G以上大文件的几个相关宏的关系
来源:互联网 发布:江苏跨省网络诈骗案件 编辑:程序博客网 时间:2024/05/22 01:59
32位LINUX使用超过2G的大文件,需要定义很多宏,与文件操作API相关的宏都有这样一些:
_FILE_OFFSET_BITS
_LARGEFILE_SOURCE
_LARGEFILE64_SOURCE
__USE_FILE_OFFSET64
__USE_LARGEFILE
__USE_LARGEFILE64
那么,它们之间的关系究竟是怎么样的呢?
终于在linux的头文件 /usr/include/features.h中找到了定义。
//原来这个文件就是专门让用户定义各种特性的:
/*These are defined by the user (or the compiler)
to specify the desired environment
其中几个供用户配置的宏的注释为:
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
_FILE_OFFSET_BITS=N Select default filesystem interface.
_GNU_SOURCE All of the above, plus GNU extensions.
__USE_LARGEFILE Define correct standard I/O things.
__USE_LARGEFILE64 Define LFS things with separate names.
__USE_FILE_OFFSET64 Define 64bit interface as default.
*/
// use前缀的宏定义都先取消掉,说明这些宏不是直接供用户使用的,而是由其他宏的定义衍生这些宏
#undef __USE_LARGEFILE
#undef __USE_LARGEFILE64
#undef __USE_FILE_OFFSET64
// _GNU_SOURCE是一张很大的通行证,定义了这个,很多相关的开关都会打开
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
#ifdef _GNU_SOURCE
# undef _LARGEFILE64_SOURCE
# define _LARGEFILE64_SOURCE 1
#endif
// 下面是打开各个USE宏的位置
#ifdef _LARGEFILE_SOURCE
# define __USE_LARGEFILE 1
#endif
#ifdef _LARGEFILE64_SOURCE
# define __USE_LARGEFILE64 1
#endif
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
# define __USE_FILE_OFFSET64 1
#endif
总结:
·使用64位大文件,定义_LARGEFILE64_SOURCE和_FILE_OFFSET_BITS=64这两个宏即可
_FILE_OFFSET_BITS
_LARGEFILE_SOURCE
_LARGEFILE64_SOURCE
__USE_FILE_OFFSET64
__USE_LARGEFILE
__USE_LARGEFILE64
那么,它们之间的关系究竟是怎么样的呢?
终于在linux的头文件 /usr/include/features.h中找到了定义。
//原来这个文件就是专门让用户定义各种特性的:
/*These are defined by the user (or the compiler)
to specify the desired environment
其中几个供用户配置的宏的注释为:
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
_FILE_OFFSET_BITS=N Select default filesystem interface.
_GNU_SOURCE All of the above, plus GNU extensions.
__USE_LARGEFILE Define correct standard I/O things.
__USE_LARGEFILE64 Define LFS things with separate names.
__USE_FILE_OFFSET64 Define 64bit interface as default.
*/
// use前缀的宏定义都先取消掉,说明这些宏不是直接供用户使用的,而是由其他宏的定义衍生这些宏
#undef __USE_LARGEFILE
#undef __USE_LARGEFILE64
#undef __USE_FILE_OFFSET64
// _GNU_SOURCE是一张很大的通行证,定义了这个,很多相关的开关都会打开
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
#ifdef _GNU_SOURCE
# undef _LARGEFILE64_SOURCE
# define _LARGEFILE64_SOURCE 1
#endif
// 下面是打开各个USE宏的位置
#ifdef _LARGEFILE_SOURCE
# define __USE_LARGEFILE 1
#endif
#ifdef _LARGEFILE64_SOURCE
# define __USE_LARGEFILE64 1
#endif
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
# define __USE_FILE_OFFSET64 1
#endif
总结:
·使用64位大文件,定义_LARGEFILE64_SOURCE和_FILE_OFFSET_BITS=64这两个宏即可
- 32位Linux下使用2G以上大文件的几个相关宏的关系
- 32位Linux下操作64位(4G以上)大文件的总结
- SetFilePointer 文件定位函数的使用---重点在于对大文件(2G/4G以上)的支持
- aix无法创建2G以上大文件的问题
- linux下使用stat函数不可以取得超过2G的大文件的解决方法
- linux环境下读写超过2G的大文件
- 使用MappedByteBuffer读取大文件(1G以上)和释放MappedByteBuffer的资源
- 32位操作系统下4G以上内存应用程序的开发
- fopen打开2G以上大文件
- linux下编译程序使其处理超过2G的大文件
- 在32位系统中使用fseek和lseek或fwrite、write写大文件时,最大只能写2G左右的解决办法
- linux c 读写超过2G的大文件解决办法
- 如何使32位Linux支持4G以上内存
- Windows上快速创建一个1G以上的大文件
- 如何让intel fortran支持2G以上大文件
- 用fopen打开2G以上大文件
- 解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
- 解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
- 工厂方法模式和IoC/DI的关系
- mini2440-----keil for ARM之中断一
- linux环境下操作特大文件
- 平行的类层次结构
- Base64编码解码的实现(C语言)
- 32位Linux下使用2G以上大文件的几个相关宏的关系
- 用java实现从文本文件批量导入数据至数据库
- 学习struts2
- vimrc
- 使用Settings Bundle为程序添加设置项
- C++(五) access函数判断文件是否存在
- 禅道程序员的10条原则
- Java reflection: accessing private fields and methods
- c# winform登录路由器的方法