$ls -l persdd_mst_hst851.dat.2
$cat a.c
#include <stdio.h>
#include <errno.h>
int main(){
FILE* fp=fopen("persdd_mst_hst851.dat.2", "a");
if(fp==NULL){
perror("open file failed!\n");
return 1;
}
fprintf(fp, "1");
fclose(fp);
return 0;
}
$cc -o a.out a.c 编译得到a.out 后执行
在网上查阅后,发现可能是文件偏移量值过大,超过32位数据结构所能表示的范围了。
解决方案有两种:
1. 你用AIX4.3-AIX5L的话,不用定义
#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE
直接用fopen64
2. 你用AIX6.1-AIX7.1的话, cc -q64 或者 cc -D_LARGE_FILES,这个可以用下面的命令看到:
getconf XBS5_ILP32_OFFBIG_CFLAGS

本文将详细解释在AIX操作系统中遇到文件偏移量过大导致无法正常打开文件的问题,并提供两种解决方案。通过使用特定的编译选项或宏定义,可以解决文件操作过程中遇到的32位限制问题。同时,提供了具体的代码示例和执行步骤,帮助开发者顺利解决问题。
3726

被折叠的 条评论
为什么被折叠?



