用于windows操作系统的strerror_r的替代api

Alternative api of strerror_r for windows OS

本文关键字:api strerror windows 操作系统 用于      更新时间:2023-10-16

我看到strerror_r(…)API在visual C++2008中不再受支持,可能是因为线程安全问题。我想在我的程序中使用类似的功能。有没有其他winapi可以做与strerror_r(..)相同的事情?

您可以尝试strerror_s。它看起来是线程安全的。

请注意,strerror_s的参数顺序与strerror_r不同。如果编写可移植代码,您可能希望使用define

#define strerror_r(errno,buf,len) strerror_s(buf,len,errno)

我看到strerror_r(…)API在visual C++2008中不再受支持,可能是因为线程安全的问题

我不相信它曾经得到过支持。该链接指向MKS Toolkit的文档,而不是Visual C++2008。strerror_r函数是线程安全的strerror。微软的URL有很快生锈的趋势,https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/strerror-strerror-wcserror-wcserror?view=vs-2019意味着vanilla strerror在Windows上是线程安全的,带有:

所有这些函数都返回一个指针,指向运行时拥有的线程本地存储缓冲区中的错误消息字符串。稍后对同一线程的调用可以覆盖此字符串。

因此,没有必要在Windows上使用strerror_r。