相关疑难解决方法(0)

在C中使用fwrite时,文件大小限制为2GB?

我有一个简短的C程序写入文件,直到磁盘上没有更多的空间:

#include <stdio.h>

int main(void) {
  char c[] = "abcdefghij";
  size_t rez;
  FILE *f = fopen("filldisk.dat", "wb");
  while (1) {
    rez = fwrite(c, 1, sizeof(c), f);
    if (!rez) break;
  }
  fclose(f);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序(在Linux中)时,它会在文件达到2GB时停止.

由于FILE结构,是否存在内部限制?

谢谢.

c filesystems fwrite fat32

21
推荐指数
2
解决办法
3万
查看次数

fopen()是否受文件系统的限制?

我编写了一个程序来生成大型.SQL文件,以便快速填充非常大的数据库.我用PHP编写脚本.当我开始编码时,我使用的是fopen()fwrite().当文件太大时,程序会将控制权返回给shell,文件将不完整.

不幸的是,我不确定"太大"究竟有多大.我想它可能已经大约4GB.

为了解决这个问题,我把文件echo给了stdout.当我这样调用程序时,我重定向了它:

[root@localhost]$ php generatesql.php > myfile.sql
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力.我的输出文件最终大约是10GB.

那么我的问题是:fopen()fwrite()是否受文件系统的限制,因为它们能够生成多大的文件?如果是这样; 这是PHP的限制吗?这是否也发生在其他语言中?

php fopen fwrite

4
推荐指数
1
解决办法
850
查看次数

标签 统计

fwrite ×2

c ×1

fat32 ×1

filesystems ×1

fopen ×1

php ×1