catopen无法在具有相同设置的不同服务器中打开相同的cat文件。

当errno为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

输入猫文件名:LinkMonitor.epod.cat

档案已开启...


对于严重的情况:

./a.out

输入cat文件名:ehap_ac_in.epod.cat

无法打开目录: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);
}

关于c - 在某些情况下,catopen()不会设置errno,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9703291/

10-15 02:06