Contenues dansTrouver plus de documentationRessources d'assistance comprises | Télécharger cet ouvrage au format PDF (558 Ko)
Intro(3)名前 | 機能説明 | 定義 | マルチスレッドアプリケーション | リアルタイムアプリケーション | ファイル | 関連項目 | 『診断』 | 注意事項 名前
機能説明
このセクションでは、さまざまな Solaris ライブラリにある関数のうち、直接 UNIX システムのプリミティブを呼び出す関数 (このマニュアルページのセクション 2 で説明) 以外の関数について説明します。関数の宣言は、各ページで説明されている #include ファイルから取得できます。このセクションの説明はライブラリ別になっています。各ライブラリは、セクション番号の後ろに入っているライブラリ名 (ライブラリの省略名) で識別できます。関連のあるライブラリのコレクションは、下記に示すように大きく 5 つのボリュームに分かれており、6 番目のボリュームは、この 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容説明になっています。ここでは、まず、この 6 番目のボリュームから説明します。 ライブラリインタフェースおよびヘッダーこのボリュームでは、他の 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容について説明します。 基本ライブラリ関数このボリュームで説明する関数は、アプリケーション開発の基本となるコア C ライブラリ関数です。 ネットワーキングライブラリ関数このボリュームで説明する関数は、さまざまなネットワーキングライブラリを構成します。 どのような状況でも、XTI API や TLI API ではなく、ソケット API を優先的に使用することをお勧めします。ただし、ほかの XPGV4v2 (standards(5) を参照) システムに移植する必要がある場合は、アプリケーションで libxnet インタフェースを使用する必要があります。移植の必要がない場合は、libxnet のインタフェースではなく、libsocket や libnsl のソケットインタフェースを使用する方法をお勧めします。XTI API、TLI API の中では、libnsl で使用できる TLI インタフェースよりも libxnet で使用できる XTI インタフェースのほうをお勧めします。 Curses ライブラリ関数このボリュームで説明する関数は、グラフィックスと文字が表示された画面の更新機能を提供するライブラリを構成します。 リアルタイムライブラリ関数このボリュームで説明する関数は、リアルタイムライブラリを構成します。 拡張ライブラリ関数このボリュームで説明する関数は、特化されたさまざまなライブラリを構成します。構成されるライブラリは、次に示す限りではありません。 定義マシンのバイトに適合するビットパターンを、1 文字と解釈することができます。ただし、言語によっては、1 文字に 1 バイト以上必要で、複数バイトで表現されるものもあります。 NULL 文字とは、値が 0 の文字のことです。C 言語では、便宜上この文字を \0 と表します。文字の並び (シーケンス) のことを文字配列と言います。最後の文字が NULL 文字になっている文字の並びのことを NULL 終了文字配列 (文字列) と言います。また、NULL 文字だけを含む文字配列のことを NULL 文字列と言います。0 をポインタにキャストすることによって得られる値は NULL ポインタと呼ばれています。C 言語では、この値は有効なポインタと一致しません。このため、ポインタを返す関数のほとんどは、NULL を返すことによってエラーを示します。NULL マクロは <stdio.h> で定義されています。size_t の型は適切なヘッダーの中に定義されています。 マルチスレッドアプリケーションPOSIX スレッドと Solaris スレッドは両方とも、同じアプリケーション内で使用できます。これらのスレッドはお互いに完全な互換性がありますが、ほかの POSIX 適合環境への移植性が保証されるのは POSIX スレッドだけです。 libpthread(3LIB) ライブラリと libthread(3LIB) ライブラリは、libc(3LIB) へのフィルタとして実装されます。 マルチスレッドアプリケーションをコンパイルするときには、コマンド行で -mt オプションを指定する必要があります。 マルチスレッドアプリケーションは -lthread とリンクする必要はありません。 fork(2) に対する POSIX 意味論が必要でない限り、アプリケーションは -lpthread とリンクする必要はありません。 アプリケーションが -lpthread とリンクしたとき、fork() の呼び出しでは、すべてのスレッドをフォークするというデフォルトの動作ではなく、fork1(2)r の動作が想定されます。 POSIX 適合のアプリケーションをコンパイルするとき、_POSIX_C_SOURCE オプションまたは __POSIX_PTHREAD_SEMANTICS オプションのどちらかをコマンド行で指定する必要があります。POSIX.1c に適合するアプリケーションには、次のように、_POSIX_C_SOURCE オプションに 199506L 以上の値を定義します。 cc -mt [ flag... ] file... -D_POSIX_C_SOURCE=199506L -lpthread Solaris の fork() と fork1() を区別する POSIX の動作の場合、次のようにコンパイルします。 cc -mt [ flag... ] file... -D_POSIX_PTHREAD_SEMANTICS Solaris スレッドの動作の場合、次のようにコンパイルします。 cc -mt [ flag... ] file... アプリケーションの安全性を保証するため、安全でないインタフェースはメインスレッドだけから呼び出すようにします。 MT 安全なインタフェースについては、各関数やライブラリのマニュアルページの「属性」の項目に記述されています (attributes(5) を参照)。インタフェースが MT 安全であることがマニュアルページに明示的に述べられていない場合、そのインタフェースは安全でないことを想定する必要があります。 リアルタイムアプリケーション早期のバインディングを可能にするためは、環境変数 LD_BIND_NOW の値を非 NULL 値に設定してください。詳細については『リンカーとライブラリ』の再配置に関する説明を参照してください。 ファイル
関連項目ar(1), cc(1B), ld(1), fork(2), intro(3), stdio(3C), attributes (5), standards(5) 『プロファイリングツール』 『ANSI C Programmer's Guide』 『診断』浮動小数点の値を戻す関数の場合、エラーの処理方法はコンパイルモードによって変わります。-Xt オプション (デフォルト) を cc コマンド行で指定している場合、指定した引数に対して関数が定義されていないとき、あるいは、値が表現不可能なとき、これらの関数は、従来の 0、±HUGE、または NaN を戻します。ところが、-Xa オプションまたは -Xc オプションを指定している場合、これらの関数は、±HUGE ではなく、±HUGE_VAL を戻します。±HUGE_VAL と HUGE は math.h で定義されており、それぞれ、無限と単一精度の最大数を表します。 注意事項ここで説明する関数、外部変数、マクロは、ユーザープログラムの中で再定義しないでください。他の名前を再定義してもこれらのライブラリの動作に影響を与えませんが、同じ名前を再定義すると、インクルードされているヘッダーの宣言と衝突してしまいます。 INCDIR の中にあるヘッダーは、このマニュアルページで説明するほとんどの関数のプロトタイプを提供します。関数のプロトタイプとは、引数の型を含む関数宣言のことです。関数のプロトタイプを使用すると、ユーザーのプログラムの中で使用されている関数の使用法が間違っていないか、コンパイラでチェックすることができます。コンパイラの代わりに lint プログラムチェッカーを使用することもできます。lint は、ヘッダーが #include 文でインクルードされていないことを検出すると、この矛盾を報告します。セクション 2、3C、3S の定義は自動的にチェックされます。その他の定義をチェックするには、lint に -l オプションを指定します。たとえば、libm の定義をチェックするには -lm を指定します。できるだけ lint を使用するようにしてください。詳細は、『プロファイリングツール』の lint に関する章を参照してください。 「STREAMS」と「ストリーム」の違いには十分気を付けてください。STREAMS とは、ネットワークサービスとデータ通信ドライバの開発をサポートするカーネル機構の一種であり、ユーティリティルーチン、カーネル機能、データ構造体で構成されています。一方、ストリーム とは、STREAMS に関連するバッファリングで使用されるファイルのことです。ストリーム は <stdio.h> の中で FILE 型へのポインタとして定義されています。 各要素の詳細な定義では、実装に固有のシンボリック名を参照しなければならない場合があります。ただし、必ずしもアプリケーションプログラムで使用できるようにする必要はありません。こうしたシンボリック名の多くは、境界の条件やシステムの制限を記述するものです。 このセクションでは、分かりやすくするために、このような実装固有の値をシンボリック名にしています。このようなシンボリック名は必ず中括弧 ( { } ) で囲まれ、ヘッダーを使ってアプリケーションからアクセスできる実装固有の定数のシンボリック名と区別されます。中括弧で囲まれているシンボリック名は、特定のシステムの文書中で定義されていることもありますが、ヘッダーを使用することによってアプリケーションプログラムから必ずしもアクセスできるわけではありません。 一般には、移植可能なアプリケーションプログラムコードの中で、このようなシンボリック名が参照されていてはなりません。たとえば、あるアプリケーションプログラムで、あるルーチンに提供された引数リストの長さが {ARG_MAX} より大きいかどうかをテストしてはなりません。 X/Open XFN 標準に基づいたフェデレーテッドネーミングサービスは、Solaris オペレーティングシステムの将来のリリースではサポートされない可能性があります。 名前 | 機能説明 | 定義 | マルチスレッドアプリケーション | リアルタイムアプリケーション | ファイル | 関連項目 | 『診断』 | 注意事項 |