كاتوبين () لا يحدد إرنو عندما يفشل في بعض الحالات

StackOverflow https://stackoverflow.com//questions/9703291

  •  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);
} 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top