3

私はrootとして実行していますが、ユーザーのuidがあります(例504)。ユーザーのロケール(私の場合en_GB)をどのように計算できますか?以下は機能しません。

setuid(user_uid);
fprintf(stderr,
        CFStringGetCStringPtr(CFLocaleGetIdentifier(CFLocaleCopyCurrent()),
                              kCFStringEncodingMacRoman);
setuid(0);

これは私のために出力en_USします。

4

2 に答える 2

1

この情報はに含まれGlobalPreferences.plistているので、実行します。

$ defaults read /Library/Preferences/.GlobalPreferences AppleLocale

望ましい結果が得られます。

于 2011-11-29T10:03:28.703 に答える
-1

それが存在しないので、あなたはできません。ロケールは環境変数によって制御され、動的に、ウィンドウからウィンドウへ、さらにはアプリケーションからアプリケーションへ(つまり、ユーザーが次のコマンドでプログラムを開始した場合)に変更できます。

env LC_LANG=fr_FR program_name ...

。)Unixでは、次のような操作を行うことで、ユーザーのデフォルトのロケールを取得できる場合があります。

FILE * in = popen( "su -c'env | grep ^ LC_; env | grep ^ LANG'- user "、 "r");

、次に入力を読み取って解析しますが、これ以上簡単なものはないと思います。

于 2011-11-24T16:25:31.913 に答える