![使用stat时出错,errno=2](https://linux22.com/image/41714/%E4%BD%BF%E7%94%A8stat%E6%97%B6%E5%87%BA%E9%94%99%EF%BC%8Cerrno%3D2.png)
情况是这样的,我创建了很多文件,文件生成后,我使用 stat 获取目录下的所有文件信息。
目的是清除所有早于特定日期的文件。
但文件生成后出现错误。
代码是这样的:
//generate files
DIR *dp;
struct dirent *dirp;
struct stat buf;
time_t now;
const char* fileName;
now = time(NULL);
if((dp = opendir(outputDir.c_str())) == NULL)
{
WARNING("Fail to open directory: " << outputDir<< ", errno=" << ERRNO());
return;
}
while(dirp = readdir(dp))
{
fileName = dirp->d_name;
if(!strcmp(fileName, ".") || !strcmp(fileName, "..")) continue;
int ret = stat(fileName, &buf);
if(ret)
{
closedir(dp);
WARNING("Fail to get info for files "<< fileName <<" via stat, errno=" << ERRNO());
return;
}
if(now - buf.st_mtime <= days * 24 * 3600) continue;
int rret = unlink(fileName);
if(rret)
{
closedir(dp);
WARNING("Fail to remove file "<< fileName <<" , errno=" << ERRNO());
return;
}
}
closedir(dp);
我在这一行中遇到错误:
int ret = stat(fileName, &buf);
errno为2,没有这样的文件或目录。但我检查了文件,它确实退出了,并且我在文件写入后刷新了流。
有谁知道原因吗?谢谢。
答案1
我猜你只是忘了在你的文件名之前 strcat-prepend 输出目录。