Pergunta

catopen não consegue abrir o mesmo arquivo cat em servidores diferentes, com a mesma configuração.

Quando errno é 0, significa que não há erro no meu entendimento.

Por favor, diga-me se alguém já viu isso antes.Se alguém souber o motivo pelo qual isso está acontecendo, será muito útil para mim

Exemplo de código que escrevi

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

}

Saída para o código acima

Para caso de sucesso:

./a.out

Enter the cat file name: LinkMonitor.epod.cat

File opened...

Para caso de faliure:

./a.out

Enter the cat file name: ehap_ac_in.epod.cat

Unable to open catalogue: ehap_ac_in.epod.cat0

Aqui 0 é o código de erro.

Foi útil?

Solução

Você limpou errno quando você escreveu a string "Unable to open catalogue: " para cerr.

Você tem que economizar o valor de errno imediatamente.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top