gpt4 book ai didi

catopen() 在某些情况下失败时不会设置 errno

转载 作者:行者123 更新时间:2023-11-30 14:26:02 28 4
gpt4 key购买 nike

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.outEnter the cat file name: LinkMonitor.epod.catFile opened...

对于失败情况:

./a.outEnter the cat file name: ehap_ac_in.epod.catUnable to open catalogue: ehap_ac_in.epod.cat0
<小时/>

这里 0 是错误代码。

最佳答案

当您将字符串 "Unable to open Catalogue: " 写入 cerr 时,您清除了 errno

您必须立即保存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);
}

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com