Question

catopen ne parvient pas à ouvrir le même fichier cat sur différents serveurs, avec la même configuration.

Lorsque errno est 0, cela signifie qu'il n'y a aucune erreur d'après ma compréhension.

S'il vous plaît dites-moi si quelqu'un a déjà vu ça.Si quelqu'un connaît la raison pour laquelle cela se produit, cela me serait très utile

Exemple de code que j'ai écrit

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

}

Sortie pour le code ci-dessus

Pour un cas réussi :

./a.out

Enter the cat file name: LinkMonitor.epod.cat

File opened...

En cas d'échec :

./a.out

Enter the cat file name: ehap_ac_in.epod.cat

Unable to open catalogue: ehap_ac_in.epod.cat0

Ici 0 est le code d'erreur.

Était-ce utile?

La solution

Vous avez effacé errno quand tu as écrit la chaîne "Unable to open catalogue: " à cerr.

Vous devez sauvegarder la valeur de errno tout de suite.

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);
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top