我以root身份运行,但拥有用户的uid(例如504
)。如何计算用户的语言环境(在我的情况下为en_GB
)?以下不起作用:
setuid(user_uid);
fprintf(stderr,
CFStringGetCStringPtr(CFLocaleGetIdentifier(CFLocaleCopyCurrent()),
kCFStringEncodingMacRoman);
setuid(0);
这为我输出en_US
。
答案 0 :(得分:1)
此信息包含在GlobalPreferences.plist
中,因此正在运行:
$ defaults read /Library/Preferences/.GlobalPreferences AppleLocale
给出了期望的结果。
答案 1 :(得分:-1)
你不能,因为它不存在。该区域设置由控制 环境变量,并且可以动态地改变,从窗口到 窗口,甚至从应用程序到应用程序(即,如果用户 开始了一个程序:
env LC_LANG=fr_FR program_name ...
。)在Unix下,你可以通过这样做来获得用户的默认语言环境 类似的东西:
FILE* in = popen( "su -c 'env | grep ^LC_ ; env | grep ^LANG' - user", "r" );
,然后阅读和解析输入,但我不认为有 更简单。