この章では、プログラミング環境に関連する Solaris 7 のネットワーク機能と、改善された国際化機能について説明します。
ファイルシステムユーティリティを集中制御する分散ファイルシステム(DFS)
NFS を含んだネットワーク情報サービスプラス (NIS+)
ネームサービススイッチファイル
これらのサービスについての詳細は、『NIS+ への移行』と『NFS の管理』を参照してください。
Solaris 7 は、ネットワーク情報サービス (NIS)、SunOS 4 のネームサービス、ネットワーク情報サービスプラス (NIS+)、異機種分散システムの企業ネームサービスをサポートしています。Solaris 7 で使用できる NIS サポートについての詳細は、「NIS+ 」 を参照してください。
NIS+ は、改善されたセキュリティ、名前空間オブジェクトの詳細なモデル、NIS より高速な更新処理などを提供します。
NIS+ のプログラマインタフェースについては、『man pages section 3』を参照してください。
nsswitch.conf ファイルは、ネームサービス管理を簡略化するために設計されました。アプリケーションは、nsswitch.conf ファイルを使用してネームサービスを選択できます。これにより、ネームサービス情報をネットワークサービス内で直接定義する必要がなくなりました。nsswitch.conf ファイルの書式についての詳細は、nsswitch.conf(4) のマニュアルページを参照してください。
SunOS 4 で提供されていた Network Interface Tap (NIT) は Solaris 7 では必要なくなりました。Solaris 7 では、イーサネットドライバが真の STREAMS ドライバに変更されたので、ドライバを直接オープンして通信できます。
pfmod(7M)、bufmod(7M)、dlpi(7P) のマニュアルページを参照してください。
Solaris 7 のイーサネットドライバとその他のデータリンクドライバは、コネクションレスの Data Link Provider Interface (DLPI) バージョン 2 をサポートしています。
ソケットは Solaris 7 でサポートされています。SunOS 4 と違って、ソケットはカーネルの中にはまったく実装されなくなり、ライブラリ libsocket として STREAMS 上に実装されています。
Solaris 7 での変更のほとんどは以前の国際化機能の改善です。国際化サポートに関する詳細な情報については、『プログラミングの国際化』を参照してください。
プログラムの国際化に関わるアプリケーション開発者は次のガイドラインに従ってください。
setlocale(3C) を呼び出して LANG
環境変数を設定する
標準のコードセットを使用し、8 ビット境界を守る
strftime(3C) を使用して日付および時刻を出力する
ユーザが照合のために判読できるように strcmp(3) を strcoll(3C) に置き換える
gettext(3C) もしくは catget(3C) を呼び出してロケール固有のメッセージカタログから翻訳された文字列を検索する
Solaris 7 環境は拡張 UNIX コード (EUC)、VTF8、PCK、V165 をサポートしています。これにより、1 つのシステムで複数バイトと複数のコードセットを利用できます。
SunOS 4 は ASCII 以外の文字のシングルバイト表現をサポートしていました。Solaris 7 では、複数バイト表現がサポートされています。このサポートは数千文字もあるアジア系言語の文字セットに必要です。
libc に含まれる複数バイトライブラリには次のような機能があります。
複数バイト文字からワイド文字への文字変換
ワイド文字の標準入出力
ワイド文字の分類
ワイド文字のフォーマット化
Solaris 7 は複数バイトファイル名をサポートしていますが、ログイン名とマシン名は ASCII 文字に制限するようにしてください。
SunOS 4 のメッセージカタログのサポートは Solaris 7 で強化され、複数バイト文字を使ってメッセージカタログを作成できるようになりました。
メッセージカタログを使うと、アプリケーションはアプリケーションが実行された母国語で実行時のメッセージを表示できます。これらのメッセージカタログは、言語ロケールによって指定される母国語用にはじめに作成しなければなりません。
SunOS リリース 5.7 のロケールデータベース (/usr/lib/locale/locale) は、SunOS 5 のロケールデータベースとは全く異なります。ただし、ユーザ側からは違いは分かりません。
Solaris 7 のほとんどのシステムコマンドはメッセージ化されました。これらコマンドの多くには複数バイト機能があります。つまり、複数バイト文字表現が可能になっています。より多くのコマンドがメッセージ化されたことにより、ローカリゼーションの労力は軽減されます。
installtxt(1) コマンドは msgfmt(1) に変更されました。メッセージを抽出するには新しい xgettext(1) コマンドを使用します。
strftime(3C) を変更すると、日付および時刻フォーマットに影響を与えます。date(1) コマンドの出力フォーマットに依存するシェルプログラムは、新しいフォーマットを処理できるように修正しなければなりません。
chrtbl(8) と catdef(8) は、localedef(1) に置き換えられました。
/usr/xpg2lib/libxpg2.a アーカイブライブラリは利用できません。これらのルーチンは、libc に入りました。
表 17-1 にこれらのインタフェースの新しい位置を示します。
表 17-1 xpg2lib ライブラリルーチンの位置
ルーチン |
Solaris 7 での位置 |
---|---|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
未サポート |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
|
/usr/lib/libc |
これらのルーチンを使用するプログラムは -lxpg2 を C コンパイラに渡す必要はありませんが、libintl.h を含む必要があるものが現在あります。(これらのルーチンについては、表 17-1 を参照してください)。
setlocale(3C) によって戻される文字列におけるロケールカテゴリの順位は、SunOS 4 と Solaris 7 では異なります。この文字列は通常 setlocale(3C) への次の呼び出しによって使用され、順位は問題とされません。アプリケーションはロケールカテゴリの特定の順位に依存しないようにしてください。