$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