在代码的某些地方,我打印如下调试消息:
int ret = getLinkSpeed(device.getSysName(), linkSpeed);
if (ret < 0)
{
logDebug("Failed to obtain port speed for this device. Error: " + std::string(strerror(errno)));
}
从documentation尚不清楚,在某些情况下strerror是否会返回0(这将导致我的代码崩溃)。有人知道它是否安全吗?
最佳答案
为什么不编写一个函数来做到这一点:
string ErrStr() {
char * e = strerror(errno);
return e ? e : "";
}
这是易于使用的,可自我记录的,可以调整输出格式的,并涵盖了strerror()可能返回NULL的可能性(我不知道是否可以)。