C(Linux)中的fopen返回"打开的文件过多"

liv*_*hak 2 c linux fopen

static char filename[128] = "trace.txt";

g_file = fopen(filename, "w");
if(NULL == g_file)
{
       printf("Cannot open file %s.error %s\n",filename,strerror(errno));
       exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我试图在写入模式下打开一个名为trace.txt的空文本文件(在我的工作目录中.)程序在我的目录中创建一个空文件trace.txt.但是检查(NULL == g_file)返回true并且它返回错误代码24(太多打开文件.).知道这是为什么.这是我在我的程序中打开的第一个文件.

令人惊讶的是,代码通过指定的名称在我的工作目录中创建一个空文件.但是由于某种原因,检查空文件指针是否成功.:(

ugo*_*ren 10

您可能有文件描述符泄漏.
如果您的代码一直打开文件,永远不会关闭它们,您迟早会达到限制,然后fopen就会失败.

您可以通过打印每次打开文件时获得的文件描述符编号来检查这一点.如果他们继续增长,你就会有泄漏.