• 締切済み

Linuxのデーモンが参照するロケール情報

Linuxで動作するデーモンアプリケーションを作成しています。 デーモンが参照するロケール情報を取得したいのですが、定義されているファイル(Solarisの場合の/etc/default/initファイル)が、各ディストリビューションごとに異なっているため、エレガントな解決方法を探しています。 参照する定義ファイルは RedHat6.2J・・・/etc/sysconfig/i18n TurboLinux6.1・・・/etc/skel/.lang/i18n OpenLinux・・・/etc/config.d/I18N といった具合なのです。 なお、どのユーザが起動してもこれらのファイルに定義してあるロケール情報で動作する必要があるため、環境変数を参照するというのはNGです。 何かよいアイデアがありましたら、教えてください。 よろしくお願いいたします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

「ロケール情報」というのが何を指すのかが良く分からない のですが、ロケール名を知りたいのでしょうか? setlocale() は第2引数に NULL を指定すると、現在の ロケールを問い合わせるだけです。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/setlocale.3.html
tshibata
質問者

お礼

素早い回答、ありがとうございました。 結局、自分のパッケージをインストールする際に、インストールディレクトリ配下に、これらのファイルをシンボリックリンクを作成することで解決できました。 また何かありましたら、よろしくお願いいたします。 ちなみにほしいロケール情報とは、ロケール名のことです。

すると、全ての回答が全文表示されます。
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

やっぱり環境変数ではないでしょうか。 ちなみにデーモンを「どのユーザが起動しても」というのが私の理解の範囲を超えているので間違っている可能性は高いです。 一般ユーザで起動するデーモンを書いたことが無いので…。

tshibata
質問者

お礼

素早い回答、ありがとうございました。 結局、自分のパッケージをインストールする際に、インストールディレクトリ配下に、これらのファイルをシンボリックリンクを作成することで解決できました。 また何かありましたら、よろしくお願いいたします。 なお、「どのユーザが起動しても」というのは、ブート時にデーモンを起動するだけではなく、例えばbbbという特定グループのユーザが起動する場合も想定していました。 この場合、bbbの環境が有効になってしまう恐れがあるため、環境変数からロケールを取得するのは好ましくありませんでした。 (簡単にいってしまえば、syslogdと同じロケールで動作したかったのです。) ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A