Domanda

Catopen non è riuscito a aprire lo stesso file cat in server diversi, con la stessa configurazione.

Quando errno è 0 significa nessun errore dalla mia comprensione.

Per favore dimmi se qualcuno ha visto così prima. Se qualcuno conosce il motivo per cui sta succedendo sarà molto utile per me

Codice di esempio Ho scritto

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

}
.

Uscita per il codice sopra

per caso di successo:

./a.out

Enter the cat file name: LinkMonitor.epod.cat

File opened...
.

per il caso FALIURE:

./a.out

Enter the cat file name: ehap_ac_in.epod.cat

Unable to open catalogue: ehap_ac_in.epod.cat0
.
.

Ecco 0 è il codice di errore.

È stato utile?

Soluzione

È stato cancellato errno quando hai scritto la stringa "Unable to open catalogue: " a cerr.

È necessario salvare il valore di errno subito.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top