Aix 下打开超过2G的文件

来源:互联网 发布:手机定时提醒软件 编辑:程序博客网 时间:2024/05/16 08:40

$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 

 

0 0