次のようなコードで、スレッドセーフなstrerror_rにc++ラッパーを提供しています。
struct MyErrno {};
std::ostream& operator<<(std::stream& os, const MyErrno& err)
{
const int len = 128
char buf [len];
os << strerror_r(errno, buf, len);
return os;
}
これは単なるラッパーなので、C++コードでは次のように言うことができます
<< MyErrno() << ..
errnoのスレッドセーフ印刷を使用します。strerror_r
また、マニュアルページでは、サイズに関係なく、不変の静的文字列(おそらくnullで終了)へのポインタ、またはnullターミネータを入力した後のポインタが返されるため、128を使用してもbuf
問題ないようです...確かではありませんこの単純なラッパーに問題がある場合(バグがある可能性があります)