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/