我提供一个C++包装的线程安全的strerror_r在这样的代码:这是使用strerror_r的正确方法吗?
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的线程安全打印。这似乎也可以使用128因为手册页说strerror_r
将返回一个指向不可变静态字符串的指针(大概是空终止),或者在用空终止符填充它后指向buf
,而不管大小如何不知道这个简单的包装有什么问题(可能是越野车)
你有这个代码的一个具体问题? – 2013-02-21 17:28:31