catopen() setzt errno nicht, wenn es in einigen Fällen fehlschlägt
-
13-12-2019 - |
Frage
Catopen kann dieselbe Cat-Datei nicht auf verschiedenen Servern mit demselben Setup öffnen.
Wenn errno 0 ist, bedeutet das nach meinem Verständnis, dass kein Fehler vorliegt.
Bitte sagen Sie mir, ob jemand so etwas schon einmal gesehen hat.Wenn jemand den Grund dafür kennt, wäre das für mich sehr hilfreich
Beispielcode, den ich geschrieben habe
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);
}
Ausgabe für den obigen Code
Für einen erfolgreichen Fall:
./a.out Enter the cat file name: LinkMonitor.epod.cat File opened...
Für den Fehlerfall:
./a.out Enter the cat file name: ehap_ac_in.epod.cat Unable to open catalogue: ehap_ac_in.epod.cat0
Hier ist 0 der Fehlercode.
Lösung
Du hast es geschafft errno
als Sie die Zeichenfolge geschrieben haben "Unable to open catalogue: "
Zu cerr
.
Sie müssen den Wert speichern errno
sofort.
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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow