ti-enxame.com

Erro ao usar stat, errno = 2

O caso é como este, eu crio muitos arquivos e após a geração de arquivos, uso o stat para obter as informações de todos os arquivos no diretório.

O objetivo é purgar todos os arquivos que são velhos do que os dias específicos.

Mas recebi um erro após a geração de arquivos.

O código é assim:

//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);

Eu recebi um erro durante esta linha:

int ret = stat(fileName, &buf);

O Errno é 2, Nenhum arquivo ou diretório. Mas eu verifiquei o arquivo, ele sai e eu lavo o fluxo após a escrita do arquivo.

Alguém sabe a causa? Obrigado.

3
Kuyo

Eu acho que você acabou de esquecer de prever o outorífico antes do seu nome de arquivo.

4
alex