首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将strerror_l与当前地区结合使用?

如何将strerror_l与当前地区结合使用?
EN

Stack Overflow用户
提问于 2015-01-09 10:26:09
回答 2查看 1.4K关注 0票数 10

我正在修复一些Linux代码,它使用strerror (不是线程安全)进行多线程处理。我发现strerror_rstrerror_l都是线程安全的。由于strerror_r的定义不同(取决于_GNU_SOURCE,定义不同),我想使用较新的strerror_l函数,但是如何获得当前区域设置的locale_t对象呢?我不使用iconv或任何东西,只是普通的libc,我不知道如何获得“默认的locale”对象(我不关心错误是用什么语言打印的,我只是想要一个人类可读的字符串)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-15 15:29:42

如果将"“传递给locale参数,newlocale将将区域设置对象分配给当前的本机locale1。

1

代码语言:javascript
运行
复制
static  locale_t locale;

bool MyStrerrorInit(void)
{
    locale = newlocale(LC_CTYPE_MASK|LC_NUMERIC_MASK|LC_TIME_MASK|LC_COLLATE_MASK|
                       LC_MONETARY_MASK|LC_MESSAGES_MASK,"",(locale_t)0);

    if (locale == (locale_t)0) {
       return false;
    }

    return true;
}

char * MyStrerror(int error)
{
    return strerror_l(error, locale);
}
票数 3
EN

Stack Overflow用户

发布于 2021-09-18 13:47:36

你可以用uselocale

代码语言:javascript
运行
复制
strerror_l(errno, uselocale((locate_t)0));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27858505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档