gpt4 book ai didi

c++ - 文件打开问题,文件删除后。 fopen 状态在 VC++ 中失败

转载 作者:行者123 更新时间:2023-11-28 06:37:16 25 4
gpt4 key购买 nike

打开例子

#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
FILE * pFile;
for(int i=0; i < 1000000; i++)
{
bool ret = remove("C:\\abc.txt");
pFile = fopen ("C:\\abc.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}
else
{
printf("%d fopen() fails \n", count);
}
}
return 0;
}

这里调用remove后,调用pFile = fopen("C:\abc.txt","w");

有时即使在 C:\中,abc.txt 文件在调用 remove 后不存在,但 fopen pFile 指针为空。

这有时会被复制,但并非总是如此。在此示例中,此问题被重现 50/60 次。

请提出一些解决方案。

最佳答案

如果您已经确定这是底层文件系统中的竞争条件问题,那么修复它的正确方法是(按照 BLUEPIXY 的建议)简单地删除 remove 调用:

pFile = fopen ("C:\\abc.txt","w");

如果文件不存在将创建文件,如果存在则将其截断为 0 大小,这正是您所需要的。

关于c++ - 文件打开问题,文件删除后。 fopen 状态在 VC++ 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com