名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項 | ライブラリ一覧
本セクションでは、さまざまなライブラリにある関数のうち、直接 UNIX システムのプリミティブを呼び出す関数 (セクション 2 のマニュアルページで説明) 以外の、JFP で提供する特殊ライブラリ について説明します。 関数宣言は、各マニュアルページに示してある #include ファイルから取り込むことができます。
文字とは、マシンのバイトに適合できる ビットパターンを指します (ただし、言語によっては“文字” は 1 バイト以上を必要とし、 複数バイトで表現されます)。
NULL 文字とは、値が 0 の文字を指し、 C 言語では便宜上 \0 と表されます。 文字配列とは、文字の並び (シーケンス) を指します。NULL 終了文字配列 (文字列) とは、最後の文字が NULL 文字である文字の並びを指します。NULL 文字列とは、終了 NULL 文字だけを含む文字配列を指します。 NULL ポインタとは、0 をポインタにキャストすることによって 得られる値を指します。C 言語では、 NULL の値は有効なポインタとマッチしません。このため、ポインタを返す関数のほとんどは、NULL を返すことによってエラーを示します。NULL マクロは <stdio.h> で定義されています。 size_t の型は適切なヘッダーの中に定義されています。
MT レベルのライブラリの詳細については attributes(5) を参照してください。
通常、/usr/include
通常、/usr/lib (32 ビット) または /usr/lib/sparcv9 (64 ビット)
libadm(3LIB), libc(3LIB), libelf(3LIB), libdl(3LIB), libkvm(3LIB), libmapmalloc(3LIB), libmp(3LIB), libnsl(3LIB), librac(3LIB), libresolv(3LIB), librpcsvc(3LIB), libsocket(3LIB), libpthread(3LIB), libthread(3LIB), libxfn(3LIB), libxnet(3LIB)
『プロファイリングツール』
ANSI C Programmer's Guide
浮動小数点の値を返す関数の場合、エラー処理はコンパイルのモードによって変わります。cc に -Xt オプションを指定した場合 (デフォルト)、指定された引数が使用する関数が定義されていないとき、または値を表現できないとき、これらの関数は 0、±HUGE、または NaN という一定の値を返します。-Xa および -Xc コンパイルモードでは、±HUGE の代わりに ±HUGE_VAL が返されます ( HUGE_VAL および HUGE は math.h の中で定義されています。HUGE_VAL は無限を表し、 HUGE は単精度小数点の最大値を表します)。
マルチスレッドアプリケーションをコンパイルする際は、_POSIX_C_SOURCE フラグ、_POSIX_PTHREAD_SEMANTICS フラグ、_REENTRANT フラグのいずれかのフラグを、コマンド行で定義しなければなりません。これにより、マルチスレッドのアプリケーションだけに適用される関数の定義が特別に有効になります。POSIX.1003.1c に適合するアプリケーションに対しては、_POSIX_C_SOURCE フラグに 199506L 以上の値を定義してください。
cc [flags ]file... –D_POSIX_C_SOURCE=199506L –lpthread |
Solaris の fork() と fork1() 関数を使用した POSIX では、 次のようにコンパイルしてください。
cc [flags ]file... –D_POSIX_PTHREAD_SEMANTICS –lthread |
Solaris では、 次のようにコンパイルしてください。
cc [flags ]file... –D_REENTRANT –lthread |
シングルスレッドのアプリケーションを作成する際、上記のフラグを定義してはいけません。定義しないことにより、 マルチスレッドをサポートしていない旧リリースの Solaris 上で実行可能なバイナリが生成されます。
アプリケーションを安全に実行するために、Unsafe インタフェースはメインスレッド以外から呼び出さないでください。
MT-Safe インタフェースは、各関数やライブラリのマニュアルページの「属性」の項に記述されています ( attributes(5) を参照)。インタフェースが MT-Safe であることがマニュアルページ中に明示されていないときは、そのインタフェースは Unsafe であるとみなしてください。
早期のバインディングを可能にするためには、非 NULL 値に対して、環境変数 LD_BIND_NOW
を設定してください。詳細については、『リンカーとライブラリ』中の再配置に関する説明を参照してください。
ここで説明する関数、外部変数、マクロは、ユーザープログラムの中で再定義しないでください。他の名前を再定義してもこれらのライブラリの動作に影響を与えませんが、同じ名前を再定義すると、インクルードされているヘッダーの宣言と衝突してしまいます。
INCDIR の中にあるヘッダーは、 本マニュアルページで説明するほとんどの関数のプロトタイプを提供します (関数のプロトタイプとは、引数の型を含む関数宣言のことです)。関数のプロトタイプを使用すると、ユーザーのプログラムの中で使用されている上記関数の使用法が間違っていないか、コンパイラでチェックすることができます。
lint プログラムチェッカを使用すると、ヘッダーが #include 文によってインクルードされていないという矛盾をチェックすることができます。セクション 2、3C、3S の定義は自動的にチェックされます。その他の定義をチェックする場合、lint に -l オプションを指定します (たとえば、libm の定義をチェックするには -lm を指定します)。できるだけ lint を使用することをお勧めします。詳細は、『プロファイリングツール』の lint に関する章を参照してください。
STREAMS と stream の違いには十分気を付けてください。 STREAMS とは、カーネルの機構の一種であり、 ネットワークサービスとデータ通信ドライバの開発をサポートします。 STREAMS は、ユーティリティルーチン、カーネル機能、データ構造体で構成されています。stream とは、STREAMS に関連するバッファリングで使用されるファイルを指します。stream は <stdio.h> の中で FILE 型へのポインタとして定義されています。
各要素の詳細な定義では、実装に特有なシンボリック名を参照しなければならない場合があります。ただし、必ずしもアプリケーションプログラムで使用できるようにする必要はありません。これらのシンボリック名の多くは、境界の条件やシステムの制限を記述するものです。
本セクションでは、分かりやすくするために、このような実装固有の値をシンボリック名にしています。このようなシンボリック名は必ず中括弧 ({ }) で囲まれ、 ヘッダーを使ってアプリケーションからアクセスできる他の実装に固有の定数のシンボリック名と区別されます。 中括弧で囲まれているシンボリック名は、特定のシステムの文書中で定義されていることもありますが、ヘッダーを使用することによってアプリケーションプログラムから必ずしもアクセスできるわけではありません。
一般には、移植可能なアプリケーションプログラムは、コードの中で、このようなシンボリック名を参照してはいけません。たとえば、あるアプリケーションプログラムは、あるルーチンに提供された引数リストの長さが {ARG_MAX} より大きいかどうかをテストしてはなりません。
説明
JFP 関数およびライブラリの序章
日本語ロケール用のワイド文字変換
日本語ロケールの文字クラスの定義
名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項 | ライブラリ一覧