Catopen () non imposta errno quando fallisce in alcuni casi
-
13-12-2019 - |
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.
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