it-swarm-es.com

Error al usar stat, errno = 2

El caso es de esto, creo muchos archivos, y después de la generación de archivos, utilizo STAM para obtener la información de todas las archivos en el directorio.

El propósito es purgar todos los archivos que son viejos que los días específicos.

Pero recibí un error después de la generación de archivos.

El código es así:

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

Tengo un error durante esta línea:

int ret = stat(fileName, &buf);

El Errno es 2, no hay tal archivo o directorio. Pero verifiqué el archivo, sí sale, y enjuve el arroyo después de la escritura de archivos.

¿Alguien sabe la causa? Gracias.

3
Kuyo

Supongo que simplemente se olvidó de Strcat-Preperse el OutpuryDir antes de su nombre de archivo.

4
alex