كاتوبين () لا يحدد إرنو عندما يفشل في بعض الحالات
-
13-12-2019 - |
سؤال
فشل كاتوبين لفتح نفس ملف القط في خوادم مختلفة ، مع نفس الإعداد.
عندما إرنو هو 0 فهذا يعني عدم وجود خطأ من فهمي.
من فضلك قل لي إذا كان أي شخص قد رأى مثل هذا من قبل.إذا كان أي شخص يعرف سبب حدوث ذلك ، فسيكون ذلك مفيدا جدا بالنسبة لي
نموذج التعليمات البرمجية كتبت
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);
}
الإخراج للرمز أعلاه
لحالة ناجحة:
./a.out Enter the cat file name: LinkMonitor.epod.cat File opened...
لقضية فاليوري:
./a.out Enter the cat file name: ehap_ac_in.epod.cat Unable to open catalogue: ehap_ac_in.epod.cat0
هنا 0 هو رمز الخطأ.
المحلول
أنت مسح errno
عندما كتبت السلسلة "Unable to open catalogue: "
إلى cerr
.
لديك لحفظ قيمة errno
على الفور.
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);
}
لا تنتمي إلى StackOverflow