catopen() は場合によっては失敗したときに errno を設定しません
-
13-12-2019 - |
質問
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 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