Pregunta

catopen no puede abrir el mismo archivo cat en diferentes servidores, con la misma configuración.

Cuando errno es 0, según tengo entendido, no significa ningún error.

Por favor díganme si alguien ha visto algo así antes.Si alguien sabe el porque me pasa me seria de mucha ayuda

Código de muestra que escribí

int main()
{

   nl_catd cat;

   string fileName;

   cout<<"Enter the cat file name: ";

   cin>>fileName;

   cat = catopen(fileName.c_str(), 0);

   if (cat == (nl_catd)-1)

   {

      cerr << "Unable to open catalogue: " << fileName <<" ....and the Error number: "<<errno<<"\n";

      exit(1);

   }

   printf("File opened...\n");

   catclose( cat );

   exit(0);

}

Salida para el código anterior

Para un caso exitoso:

./a.out

Enter the cat file name: LinkMonitor.epod.cat

File opened...

Para caso de falla:

./a.out

Enter the cat file name: ehap_ac_in.epod.cat

Unable to open catalogue: ehap_ac_in.epod.cat0

Aquí 0 es el código de error.

¿Fue útil?

Solución

tu limpiaste errno cuando escribiste la cadena "Unable to open catalogue: " a cerr.

Tienes que guardar el valor de errno inmediatamente.

cat = catopen(fileName.c_str(), 0); 

if (cat == (nl_catd)-1) 

{ 
   int errno_catopen = errno;
   cerr << "Unable to open catalogue: " << fileName <<" ....and the Error number: "<<errno_catopen <<"\n";
   exit(errno_catopen);
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top