fopen 在创建大量文件后因 EFBIG "File too large" 而失败
fopen fails with EFBIG "File too large" after creating a lot of files
>我正在创建一个程序,该程序根据某些输入创建小文件(8 KB(,因此它是这样的
#include <iostream>
#incclude <string.h>
#include <errno.h>
void func()
{
const char * file_name = NULL;
// we get file_name from somewhere , ex : pic.png
FILE * fp = fopen();
if (fp == NULL)
{
std::cout << "failed to open file , " << strerror(errno) << std::endl ;
return 0;
}
// some code to deal with the file
}
我创建了很多文件(大约 420 万个,我正在尝试测试性能( 它总是在相同的数字上产生EFBIG错误(文件太大( 虽然我每次都在创建新的唯一文件。
这些文件是在 8 线程中创建的。
对此有任何解释的想法吗?
我想澄清一下,显然这不是确切的代码,但是您可以认为此函数在8个线程中以高频率运行,直到生成该错误为止,并且从该点到程序完成为止,还会为所有文件生成此错误
我实际上无法在任何地方找到 Linux 的文档,但由于您的文件数量显然已达到最大 32 位无符号整数 (4,294,967,295(,听起来您的文件系统无法在一个目录中处理超过这么多文件。错误"太大"实际上是指目录,而不是您尝试打开的文件。
这是一个疯狂的文件数量在一个目录中。只需将它们拆分到不同的目录中即可。
另外,请注意不要一次打开大量文件句柄;您的操作系统将对此施加限制(您可以与ulimit -a
一起检查(。但是,当您耗尽此供应时,您应该得到EMFILE
。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 如何在从文件中读取整数时使用 file.eof()?
- "No such file or directory" C++标头问题
- 如何修复"too few arguments to function"?
- 使用 sftp_open() 使用 C++ 中的 SFTP libssh 将文件从本地复制到远程时,File 返回 N
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- typedef vector size_type in header file
- make 命令创建 .file,但不创建应用程序文件
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- 使用 编译时。RES File with MinGW G++, .无法识别 RES
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败